比较两个基元的内存位置

Compare memory locations of two primitives

有什么方法可以比较 java 中两个 int 的内存位置?

int x = 25;
int y = 25;

我想检查并证明这两个变量是引用相同的值还是创建了两次。

x == y

上一行比较了文字 values 这不是我想要的。有什么想法吗?

您所要求的是不可能的。

Java 中的原始值就是:原始 。他们的 "definition" 中没有任何内容与内存位置有关。

javac 编译器会进行常量折叠,当然如果这是您的问题,jit 会在运行时应用各种优化。但是您无法获得关于原始值的 "memory layout"。即使是 *com.misc.Unsafe" 和 VarHandle 也只处理引用类型。

虽然这不可能用代码来完成,但您可以查看代码段生成的字节码。

0: bipush        25
2: istore_1
3: bipush        25
5: istore_2
6: return

看到 bipush 被调用了两次,看来是进行了两次堆栈分配。不过,稍后可以很好地进行优化。