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

前几天,我遇到了sun.misc.Unsafe软件包,并对它的功能感到惊讶。


当然,该类是未记录的,但是我想知道是否有充分的理由使用它。在需要使用它的地方会出现什么情况?在现实世界中如何使用它?


此外,如果您确实需要它,这是否并不表示您的设计可能有问题?


为什么Java甚至包括此类?


梵蒂冈之花
浏览 417回答 3
3回答

PIPIONE

通过在某些代码搜索引擎中运行搜索,我得到以下示例:Java Object Notation-用它来引用Javadoc进行更有效的数组处理用于访问{@link Unsafe}对象的简单类。{@link Unsafe} *是必需的,以允许对阵列进行有效的CAS操作。请注意,{@ link java.util.concurrent.atomic}中的版本(例如{@link java.util.concurrent.atomic.AtomicLongArray})需要额外的内存排序保证,这些算法通常不需要这些保证,而且价格昂贵在大多数处理器上。SoyLatte -Java 6 for OSX Javadoc摘录/ **静态字段的基于sun.misc.Unsafe的FieldAccessors的基类。从反射代码的角度来看,观察到只有九种类型的字段:八种基本类型和对象。使用类Unsafe代替生成的字节码可以节省动态生成的FieldAccessors的内存和加载时间。* /SpikeSource/ *通过导线发送的FinalFields ..如何在接收端解组和重新创建对象?我们不想调用构造函数,因为它将为最终字段建立值。我们必须完全像发送方一样重新创建最终字段。sun.misc.Unsafe为我们做到了。* /还有许多其他示例,只需点击上面的链接即可...

慕姐4208626

有趣的是,我什至从未听说过这堂课(这确实是一件好事)。让我们想到的一件事是使用Unsafe#setMemory将包含敏感信息(密码,键等)的缓冲区归零。您甚至可以对“不可变”对象的字段执行此操作(然后再次,我认为普通的老式反射也可以在此处实现此目的)。我不是安全专家,因此请带一点盐。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java