Java:如何打印整数对象的引用?

标签 java reference integer

假设

Integer integerA = 500;

我想打印返回的引用。

最佳答案

要以数字形式获取对对象的引用,您可以在支持它的 JVM 上使用 Unsafe。您可以将引用放在数组中并使用 Unsafe.getInt() 访问它以获得 32 位引用(注意:大多数 64 位 JVM 将使用 32 位引用)或 Unsafe.getLong() 这将访问引用作为一个数字,但如果发生 GC 并且对象被移动,它可能会在您获得它后立即改变。

另一个复杂的问题是,CompressedOops 意味着可以用多种不同的方式转换对象的索引。为了简单起见,我建议使用 4 GB 到 26 GB 的堆。对于这些大小,您将地址移动 << 3获取地址。

顺便说一句,您可以使用 Unsafe.putInt(x, 1, hashCode) 来覆盖系统 hashCode。 ;)

关于Java:如何打印整数对象的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18030739/

相关文章:

java - 在 Glassfish v3 中,Servlet 请求无明显原因地按顺序执行

java - TableView JAVAFX 2.1 中的上下文菜单

java - NumberFormatException 在正确的字符串上抛出?

c - 如何在 C 代码中仅使用整数数学计算比特率?

reference - 另一种类型中自定义类型的 Golang slice 作为引用

c - 无符号和有符号 int 的范围

java - java如何知道使用什么索引

java - CMP 证书请求

java - 如何让两个类引用同一个对象及其方法

reference - 为什么克隆我的自定义类型会导致 &T 而不是 T?