发布于 2016-05-07 00:55:26 | 292 次阅读 | 评论: 0 | 来源: InfoQ

这里有新鲜出炉的Java设计模式,程序狗速度看过来!

Java程序设计语言

java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。


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



历史版本 :
Java SE 9.0.1 和 8u151/ 8u152 发布
Java 开源博客 Solo 2.4.0 发布,新增全文搜索
终于,期待已久的 Java 9 正式发布了!
Java 9 接近交付日期和范围审查
Java 9 发布在即,Oracle OpenJDK 着手优化 Unsafe 类
Java SE 8u91 / 8u92 发布
Java SE 8 Update 77 发布,包含重要安全修复
Oracle 发布 Java 模块系统状态报告
Java SE 8u65/66 发布
Java 9 公布发行计划,明年 9 月发布正式版
关键的 Java 更新,修复 19 个漏洞,禁用 SSL 3.0
Oracle 宣布更多 Java 9 新特性
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务