Rit*_*tel 4 java hashcode jvmti
我的一个朋友和我有以下赌注:
这是有可能得到Object从存储器使用再次Identity Hashcode收到对Object使用System.identityHashCode()在Java.受垃圾收集器尚未清除的限制.
我一直在寻找一个答案,而且我找不到明确的答案.
我认为使用它可能会这样做JVMTI,但我还没有使用它.
你们中有谁对此有答案吗?如果我能在你的网站上这样做,会给你买一个coffie;)
菲利克斯提前谢谢你
ps:我说这种行为可以实现,而我的朋友说这是不可能的
从理论上讲,你可能会遇到一些问题.
如果您可以假设它对于静态集合等已知对象是可见的,则应该很容易通过反射进行导航.
BTW一旦64位OpenJDK/Oracle JVM,身份哈希码存储在偏移量为1的标题中,这意味着您可以读取它,甚至可以使用sun.misc.Unsafe更改它.;)
BTW2标头中存储的31位hashCode(非32位)是懒惰设置,也用于偏置锁定.即,一旦调用Object.hashCode()或System.identityHashCode(),就会禁用对象的偏向锁定.
| 归档时间: |
|
| 查看次数: |
592 次 |
| 最近记录: |