您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么存在sun.misc.Unsafe,如何在现实世界中使用它?

为什么存在sun.misc.Unsafe,如何在现实世界中使用它?

例子

VM“化身”。即无锁哈希表中使用的CAS(比较和交换),例如:sun.misc.Unsafe.compareAndSwapInt,它可以对包含针对CAS的特殊指令的本机代码进行真正的JNI调用

在此处阅读有关CAS的更多信息http://en.wikipedia.org/wiki/Compare-and-swap

主机VM的sun.misc.Unsafe功能可用于分配未初始化的对象,然后将构造函数调用解释为任何其他方法调用

可以从本机地址跟踪数据。可以使用java.lang.Unsafe类检索对象的内存地址,并通过不安全的get / put方法直接在其字段上进行操作!

JVM的编译时间优化。使用“魔术”的高性能VM,需要低级操作。例如:http : //en.wikipedia.org/wiki/Jikes_RVM

分配内存sun.misc.Unsafe.allocateMemory例如:-调用ByteBuffer.allocateDirect时,DirectByteBuffer构造函数在内部调用

跟踪调用堆栈并重播由sun.misc实例化的值。不安全,对检测很有用

sun.misc.Unsafe.arrayBaSEOffset和arrayIndexScale可用于开发arraylet,该技术可有效地将大型数组分解为较小的对象,从而限制了对大型对象进行扫描,更新或移动操作的实时成本

http://robaustin.wikidot.com/how-to-write-to-direct-memory-locations-in-java

其他 2022/1/1 18:14:26 有404人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶