2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Java 9 发布在即,Oracle OpenJDK 着手优化 Unsafe 类

  • 2016-05-06
  • 本文字数:1093 字

    阅读完需:约 4 分钟

java 9 正式版预计在 2017 年 2 季度发布,目前大部分 JEP 已经基本成型。其中,最关键特性或许是 JEP 261 , 该 JEP 实现了 java 平台的模块系统, 具体说明可以参见 JSR376 。 模块系统依赖于 JEP260 (封装了大部分内部 API),导致的结果是 JEP193 定义的多个句柄会暴露 sun.misc.Unsafe 类的功能。此前 Info报道过致力于解决sun.misc.Unsafe 句柄问题的团队,可能的解决方案细节亦可参见另一篇报道

Bug 8149159 最近被提交到 JDK Bug 管理系统, 建议优化和清理 Unsafe 类, 包括将参数检查从本地代码移入 Java(简化 JIT)、 sun.misc.Unsafe 类和 jdk.internal.misc.Unsafe 类的统一、 以及本地代码的整体清理。

2 月 18 日,Oracle 工程师 Mikael Vidstedt 向 OpenJDK 开发者社区提交了两个补丁(分别针对 OpenJDK 和 OpenJDK HotSpot VM)

关于这两个补丁,Vidstedt 总结道:

  • 避免代码重复,sun.misc.Unsafe 将全部实现委托给 jdk.internal.misc.Unsafe,这意味着 java 虚拟机 (特别是 unsafe.cpp)不再需要关心 s.m.Unsafe 的实现。
  • s.m.Unsafe 的委托方法通常会被内联,但是为了避免性能下降的风险,仍然添加了 @ForceInline 注解
  • 更新文档,指明用户应该确保 Unsafe 类的参数正确
  • 参数检查从 Unsage.cpp 移入 java,简化本地代码以及允许 JIT 进一步优化
  • 放松了特定参数的检查,比方说最近引入的 U.copySwapMemory 没有检查空指针。具体原因可以参考 j.i.m.U.checkPointer 的文档。除了 U.copySwapMemory,现在 Unsafe 类方法也都没有对参数执行 NULL 检查
  • 在 U.copySwapMemory 类的基础上,对 j.i.m.U.copyMemory 增加了一个测试案例。请随时提醒我合并过来(本该如此)

在 Vidstedt 看来,Usage 类的清理算是“相当激进”了,值得注意的地方有:

  • Unsafe_ 方法以及 unsafe.cpp 中的其他本地方法被申明为静态方法
  • 新增 unsafe.hpp 代码文件,文件中移入 VM 其他组件的一些方法。移除部分“extern”函数声明(不要过度使用 extern)
  • 对于不怎么用到的 UNSAFE_LEAF,移除警告性质的注释(没有必要,只是个 VM_LEAF)
  • 一些简单的 leaf 方法使用 UNSAFE_LEAF
  • UNSAFE_ENTRY/UNSAFE_END 代码块新增大括号,帮助自动缩进
  • 移除未使用的 Unsafe_<…>##140 形式的函数和宏
  • 更新宏参数,与 unsafe.cpp 的宏定义保持一致
  • 更换带断言的参数检查,正如前面提及,这些检查移入了 j.i.m.Unsafe,移除所有 s.m.Unsafe 相关的代码

查看英文原文: Oracle’s OpenJDK Cleanup of “Unsafe” Implementation


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-05-06 19:003920

评论

发布
暂无评论
发现更多内容

3D孪生场景搭建:3D漫游

3D建模设计

数字孪生 3D编辑器 3D漫游

Embedding技术与应用 (2) :神经网络的发展及现代Embedding方法简介

Baihai IDP

人工智能 神经网络 AI 嵌入 白海科技

多数据源管理:掌握@DS注解的威力 | 京东云技术团队

京东科技开发者

mybatis Mybatis Plus 企业号10月PK榜 DS注解

OWASP Top 10漏洞解析(3)- A3:Injection 注入攻击

华为云PaaS服务小智

云计算 软件开发 华为云

身为产品经理该如何向客户推广API商品数据接口,该如何跟进项目和程序员对接?

Noah

API 接口 API 文档

零售业:别让数据安全成为业务的绊脚石!

极盾科技

数据安全 零售行业

火山引擎DataLeap一站式数据治理解决方案及平台架构

字节跳动数据平台

大数据 数据中台 数据安全 数据研发 企业号10月PK榜

3D孪生场景搭建:参数化模型

3D建模设计

模型 数字孪生 参数化模型

位移贴图和法线贴图的区别

3D建模设计

材质修改 纹理贴图

递归解析Json,实现生成可视化Tree+快速获取JsonPath | 京东云技术团队

京东科技开发者

json tree 企业号10月PK榜 JsonPath

3D孪生场景搭建:模型区域摆放

3D建模设计

数字孪生 3D场景编辑器

苹果Mac视频编辑软件 Final Cut Pro

展初云

Mac软件 视频编辑工具 FCPX软件 fcpx

实现动态表单的一种思路 | 京东云技术团队

京东科技开发者

元数据 动态表单 前后端交互 企业号10月PK榜

3D孪生场景SDK:Viwer 孪生世界

3D建模设计

数字孪生

【AI模型】首个Joy 模型诞生!!!全民生成Joy大片 | 京东云技术团队

京东科技开发者

AI模型 企业号10月PK榜 京东joy

DeFi 的兴起:与加密货币交易所应用程序开发的协同作用

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

像win一样使用Mac的鼠标右键:MouseBoost Pro

展初云

Mac软件 鼠标扩展

开源即时通讯IM框架 MobileIMSDK v6.4 发布

JackJiang

网络编程 即时通讯 IM

对于数字化转型,数据代表了什么?

IT民工大叔

数据 数字化转型 数字化

Mac电脑风扇转速控制 Macs Fan Control Pro中文激活版

胖墩儿不胖y

Mac软件 风扇控制软件 风扇转速

企业拥抱大模型,腾讯云为什么值得期待?

ToB行业头条

透明度和透明贴图制作玻璃水杯

3D建模设计

3D模型 材质修改 纹理贴图

3D孪生场景搭建:模拟仿真

3D建模设计

数字孪生 3D应用场景 3D编辑器

小白修图必备Topaz Photo AI for Mac图像智能处理工具

展初云

图像处理 Mac 软件 修图软件

MySQL innoDB 间隙锁产生的死锁问题 | 京东云技术团队

京东科技开发者

MySQL innodb 死锁 Mysql死锁 企业号10月PK榜

让你遥遥领先的七个编程习惯

互联网工科生

编程 编程好习惯

要体验 AI 编程助手吗?

亚马逊云科技 (Amazon Web Services)

亚马逊云科技 AIGC

软件测试/测试开发丨接口测试学习笔记-常见的接口协议

测试人

软件测试 HTTP 接口测试 接口协议

免备案香港服务器助你快速扩展业务,无忧上线新业务

一只扑棱蛾子

香港服务器

人工神经网络(ANN)

小魏写代码

Java 9发布在即,Oracle OpenJDK着手优化Unsafe类_Java_Monica Beckwith_InfoQ精选文章