写点什么

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

评论

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

AI驱动智能决策:商品计划领域的零售时装品牌革新之路

第七在线

直播预约|ApsaraMQ x Confluent 云原生 Kafka 线上沙龙

阿里巴巴云原生

kafka 阿里云 云原生

加速人形机器人技术发展,2025亚洲人形机器人展开启全国巡展

AIOTE智博会

机器人展 机器人展览会 人形机器人展 机器人展会

VMware vCenter Server 7.0U3u 发布 - 集中管理 vSphere 环境

sysin

vcenter

与 AI 共处 72 小时,没有食物、水、手机,会发生什么|寻找「赛博鲁滨逊」

声网

Java程序员需要掌握的技术

秃头小帅oi

CAD如何提取图形数据

极客天地

CAD线型比例变了怎么办

极客天地

Java版Manus实现来了,Spring AI Alibaba发布开源OpenManus实现

阿里巴巴云原生

阿里云 云原生

GSoC谷歌编程之夏2025招募中,Apache DolphinScheduler需要你的提案!

白鲸开源

开源 Apache DolphinScheduler 谷歌 GSoc

安装Redis

^O^

redis

局域网开会的视频会议软件推荐哪个?

BeeWorks

IM 即时通讯IM 私有化部署 企业级应用 局域网视频软件

基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践

阿里巴巴云原生

云计算

超实用!Prompt程序员使用指南,大模型各角色代码实战案例分享

王磊

【LazyLLM × MinerU】你的私人学术特工已上线!PDF拆解黑科技来了,让RAG更懂你的文章!

商汤万象开发者

AI LLM

<技术白皮书> 智能开发范式革新:iVX 图形化平台重塑软件开发生态

代码制造者

当实时消费遇到 SPL:让数据处理更高效、简单

阿里巴巴云原生

阿里云 云原生 sls

时隔仅一月,ToDesk再发公告削减免费权益,每月时长不再透明

科技热闻

专用、轮式、人形全面布局:「普渡机器人」找到具身智能商业化最优解

机器人头条

科技 大模型 人形机器人 具身智能

大模型 Token 的消耗可能是一笔糊涂账

阿里巴巴云原生

阿里云 云原生 Token

Higress.ai 站点全新发布,轻松解锁 AI 新能力,开启全球服务!

阿里巴巴云原生

阿里云 AI 云原生

加入DolphinScheduler大家庭,成为大数据调度的传播者!

白鲸开源

开源 Apache DolphinScheduler

类似企微钉钉的企业聊天软件,这个局域网聊天工具可以选择!

BeeWorks

IM 即时通讯IM 私有化部署 企业级应用 局域网视频软件

CAD怎么插入PDF图纸

极客天地

Burp Suite Professional 2025.3 发布,引入 Burp AI 通过人工智能增强安全测试工作流程

sysin

burp

VMware vSphere 7.0 Update 3u 发布 - 数据中心虚拟化和云原生平台

sysin

vSphere

SD-WAN怎样统一管理企业的分支机构网络?

Ogcloud

SD-WAN SD-WAN组网 sd-wan专线 SD-WAN厂家 分支组网

纯干货 | Dolphinscheduler Master模块源码剖析

白鲸开源

开源 源码解析 Apache DolphinScheduler

新一代AI低代码MES,助力企业数字化升级

万界星空科技

AI 制造业 mes AI低代码平台 AI低代码MES

2年前端人血泪经验,避坑贴……

伤感汤姆布利柏

SD-WAN专线怎样进行企业网络防护?

Ogcloud

SD-WAN SD-WAN组网 sd-wan专线 SD-WAN厂家

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