Java 9 EA版本已经发布,现在我们可以看到如何使用sun.misc.Unsafe。 我领导了公开运动,以保留对Java 9的访问,该访问最终成功,从而导致对JEP 260的修订。

那么,事情如何结束?

设定

首先,您需要下载 Java 9 EA。 对于IDE,我使用IntelliJ IDEA。 您需要2017年2月27日发布的新的2017.1 Public Preview 。早期版本不适用于Java 9。

jdk.unsupported模块

jdk.unsupported模块中现在提供了sun.misc.Unsafe。 完整的JRE和JDK映像中包含此模块。

这是jdk.unsupported的模块声明:

module jdk.unsupported {exports sun.misc;exports sun.reflect;exports com.sun.nio.file;opens sun.misc;opens sun.reflect;
}

如您所见,sun.misc已导出。

使用它

我有一个示例项目,带有一个包java9unsafe和一个具有相同名称的模块。

要使用Unsafe,您需要将jdk.unsupported添加到代码的模块声明中:

module java9unsafe {requires jdk.unsupported;
}

幸运的是,IDEA将检测缺少的声明,并建议将鼠标悬停在import声明上时为您添加。

然后,您可以使用不安全。 请注意,您必须通过反射间接获取Unsafe实例,否则会收到安全异常

module jdk.unsupported {public class Java9Unsafe {public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {System.out.println("The address size is: " + getUnsafe().addressSize());}@SuppressWarnings("restriction")private static Unsafe getUnsafe() throws NoSuchFieldException, IllegalAccessException {Field singleoneInstanceField = Unsafe.class.getDeclaredField("theUnsafe");singleoneInstanceField.setAccessible(true);return (Unsafe) singleoneInstanceField.get(null);}}

答案是:地址大小为:8

翻译自: https://www.javacodegeeks.com/2017/03/using-sun-misc-unsafe-java-9.html

在Java 9中使用sun.misc.Unsafe相关推荐

  1. OpenJDK1.8 :java/lang/NoSuchMethodError‘: Method sun.misc.Unsafe.defineClass(Ljava/lang/String;[BII)

    记录一个OpenJDK1.8的一个BUG : Crash日志 报错信息 : Event: 0.078 Thread 0x00007f1160055800 Exception <a 'java/l ...

  2. sun.misc.Unsafe苦难告诉我们什么

    Oracle将删除Java 9中的内部sun.misc.Unsafe类 . 尽管大多数人可能对这种变化漠不关心,但其他一些人(主要是图书馆开发人员)并非如此. 博客圈中最近有几篇文章描绘了这种变化所暗 ...

  3. unsafehelper java_Java 9中将移除 Sun.misc.Unsafe

    灾难将至,Java 9中将移除 Sun.misc.Unsafe Oracle 正在计划在Java 9中去掉 sun.misc.Unsafe API. 这绝对将是一场灾难,有可能会彻底破坏整个 java ...

  4. JVM 的 Finalization Delay 引起的 OOM(java.lang.OutOfMemoryError:null at sun.misc.Unsafe.allocateMemory.)

    今天在压力测试环境某一个服务出现crash了,经过一番检查,终于发现是由于JVM的Finalization Delay引起的,这个问题比较特殊,这里记录一下. 这个服务是用Java写的,主要完成的功能 ...

  5. unsafe jdk9_JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等

    unsafe jdk9 Java 9距离(希望)数月了,现在该回顾一下即将发生的变化以及您应该采取的措施 Java 9即将来临(我们正在计算到达的日子 ),其中包含一系列新功能和改进功能. 这就是为什 ...

  6. JDK 9清单:Project Jigsaw,sun.misc.Unsafe,G1,REPL等

    Java 9距离(希望)数月了,现在该讨论一下即将发生的变化以及您应该采取的措施 Java 9即将来临(我们正在计算到达的日子 ),其中包含一系列新功能和改进功能. 这就是为什么我们决定创建一份清单来 ...

  7. 深入理解sun.misc.Unsafe原理

    前言 Unsafe类在JDK源码中被广泛使用,在Spark使用off-heap memory时也会使用到,该类功能很强大,涉及到类加载机制(深入理解ClassLoader工作机制),其实例一般情况是获 ...

  8. Eclipse导入sun.misc.Unsafe类及其源码

    一.Eclipse导入sun.misc.Unsafe类报错的解决方法 在eclipse中导入sun.misc.Unsafe类后,错误如图所示: 错误很明显,提示找不到这个类.具体解决方案如下: 点击W ...

  9. Java中的天使和魔鬼sun.misc.Unsafe

    我们在看ConcurrentHashMap源码时经常看到Unsafe类的使用,今天我们来了解下Unsafe类. Java是一个安全的编程语言,它能最大程度的防止程序员犯一些低级的错误(大部分是和内存管 ...

最新文章

  1. android高级组件,Android高级组件ImageSwitcher图像切换器使用方法详解
  2. mysql 累计值_mysql 累计值计算
  3. 12、Power Query-透视列实例应用(多单元格记录合并及汇总)
  4. chrome js 读取文件夹_使用JavaScript遍历本地文件夹的文件
  5. [Golang]一道考察defer与命名返回值的题目
  6. 《Java程序设计》第五周学习总结
  7. 双机通信c语言程序,双机通信(C语言、主机和从机共用程序)
  8. python中面向对象的ui_怎样理解Python中的面向对象?
  9. python处理excel的方法有哪些_Python操作Excel简单方法
  10. Cisco 3550配置DHCP实例
  11. 31. 了解各种与排序有关的选择
  12. 自由空间光通信OptiSystem仿真
  13. 一文解决 浏览器清除控制台历史记录~
  14. oracle adjusting parallel,ora-29740故障求救
  15. Excel使用技巧总结
  16. ZUI————对话框闪退问题
  17. Java中数字转中文数字
  18. android 人脸识别边框_android自定义Arcface人脸识别框/人脸抓拍框/人脸追踪框
  19. java产生随机英文名_Java之随机生成用户数据
  20. 这就是Staday跨境电商吸引卖家和合作商的资本!

热门文章

  1. 分布式作业 Elastic Job 如何动态调整
  2. Oracle入门(二)之服务启动bat
  3. Java命令学习系列(二)——Jstack
  4. mysql添加新用户
  5. 最全、最详细的配置jdk十步法!
  6. Redis非阻塞I/O多路复用机制
  7. arm linux串口控制led,通信程序设计 - Linux下ARM和单片机的串口通信设计
  8. 区间数多属性决策matlab,区间数多属性决策的改进理想解法
  9. Spring websocket 使用@Autowired 出现null
  10. 多线程的三种实现方法