内存地址 #
identityHashCode与真正的内存地址 #
严格来说,identityHashCode()并不指向真实的地址,关于对象的真正地址,可以参见 Java 正确获取对象内存地址的方式
String s1 = new String("s1") ;
String s2 = new String("s1") ;
System.out.println(System.identityHashCode(s1));
System.out.println(System.identityHashCode(s2));
// 1688376486
// 2114664380
Java 对象布局 ( JOL ) 工具 #
- 首先,添加 jol-core依赖:
<dependency>
<groupId>org.openjdk.jol</groupId>
<artifactId>jol-core</artifactId>
<version>0.10</version>
</dependency>
- 要在 JVM 中查找特定对象的内存地址,我们可以使用 addressOf() 方法:
String answer = "s1";
System.out.println("The memory address is " + VM.current().addressOf(answer));
// The memory address is 31875131456