是否可以在java中的变量堆上获取地址?

Ran*_*ber 5 java heap pointers memory-management memory-address

让我说我有这个变量:

...
Somekindofobject var = new Somekindofobject();
...
Run Code Online (Sandbox Code Playgroud)

我想知道var在堆上的位置(通过地址,如0x08等),并打印出地址.

可能吗?

Mik*_*uel 8

我正在开发一个程序,它获取输入java程序,以及打印出有关变量访问的文件信息的仪器代码.我可以在同一个类的两个对象字段之间确定的唯一方法是通过堆上的地址.因此,我需要堆上的地址

你可以System.identityHashCode用来获得相同的概念.它并不完美,但它非常好.如果确实获得了对象的堆地址,请记住允许JVM移动对象(并且经常在分代垃圾收集器将长寿命对象提升为旧代时),因此对象的堆位置不是在所有情况下都是良好的身份代理.