【发布时间】:2011-06-06 18:19:15
【问题描述】:
可以说我有这个变量:
...
Somekindofobject var = new Somekindofobject();
...
我想知道 var 在堆上的位置(按地址,如 0x08 等),并将地址打印出来。
有可能吗?
【问题讨论】:
-
如果您只想打印对象,那么知道它在堆上的位置有什么好处?你真正想要完成什么?
-
@Anon:我想他的意思是把地址打印出来。
-
我正在开发一个程序,该程序将 java 程序作为输入,并测试代码打印出有关变量访问的文件信息。我可以确定同一类对象的两个字段之间的唯一方法是通过他们在堆上的地址。因此,我需要堆上的地址
-
通常使用 Java 字节码来检测 Java 字节码。在这种情况下,您不需要“地址”。也许这里潜伏着另一个/更好的问题?如果需要“地址”,那么我所知道的唯一方法是带有固定功能的 JNI,但恐怕这可能不会“如你所料”那样工作。
-
看起来您需要使用调试框架,这些通常会提供某种唯一的对象 ID。
标签: java pointers memory-management heap-memory memory-address