50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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:004120

评论

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

自动化测试中常用的 JavaScript 脚本

测吧(北京)科技有限公司

测试

Altair 助力eVTOL,与航空航天初创企业Moya Aero合作

Altair RapidMiner

测试 仿真 智能制造 航天航空 altair

即购即享,制作简单!双十一轻松入购华为云Flexus数字人

平平无奇爱好科技

国内首家! 阿里云人工智能平台 PAI 通过 ITU 国际标准测评

阿里云大数据AI技术

人工智能 阿里云 PAI ITU

如何选择最适合企业的ETL解决方案?

谷云科技RestCloud

kettle ETL 数据集成 DataX ETLCloud

WebRTC 作者加入 OpenAI 主导实时 AI 项目;TTS 小模型 OuteTTS v0.2 发布:声音克隆+多语言

声网

RGB/INT8 输入注意事项

地平线开发者

自动驾驶 算法

华为云Flexus数字人超低门槛!双十一轻松实现数字人自由

平平无奇爱好科技

Page Object 设计模式:实现 Selenium 测试用例的良好分层

测吧(北京)科技有限公司

测试

数字化浪潮下的数据资产管理:解锁保险行业的无限潜能

数造万象

保险 数据治理 数据血缘 数据资产管理 #数据

如何通过高效的缓存策略无缝加速湖仓查询

镜舟科技

开源 StarRocks Data Cache

京东商品详情数据接口调用,商城上货实战案例(仅供参考)

tbapi

京东API接口 京东商品详情接口

web 自动化测试框架 cypress全面指南

测吧(北京)科技有限公司

测试

百元投入即可拥有“数字人”!双十一华为云Flexus数字人更超值

平平无奇爱好科技

升级原生鸿蒙即可领近千元权益!华为Mate70和MateX6到手即可升级

最新动态

双十一入手数字人!华为云Flexus数字人3大优势赋予硬核体验

平平无奇爱好科技

创新实践:基于边缘智能的边云协同智能驾驶训练舱解决方案

火山引擎边缘云

IoT 智能驾驶 大模型 AI 基础设施 边缘智能

工作坊报名|使用 TEN 与 Azure,探索你的多模态交互新场景

声网

超简单、超高性价比的数字人!双十一华为云数字人Flexus特惠亮相

平平无奇爱好科技

企业必看:10款知名的公司内部网盘推荐

易成研发中心

想要进行Facebook直播?快来看看这份详细指南!

Ogcloud

海外直播专线 海外直播 海外直播网络 facebook直播 facebook运营

鸿蒙NEXT开发案例:温度转换

zhongcx

传媒行业必备!双十一购买华为云Flexus数字人后,我总结了3大优势

平平无奇爱好科技

快来获取“数字员工”!双十一华为云Flexus数字人不到千元

平平无奇爱好科技

品牌营销新路径!双十一华为云Flexus数字人内容输出更高效

平平无奇爱好科技

Scheduled线程池实践

FunTester

超简单、超高性价比!双十一华为云Flexus数字人轻松上手

平平无奇爱好科技

史上最强悍的Mate来啦!开场曲《怒放的生命》AiMax版独家上线华为视频

最新动态

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