【发布时间】:2012-08-25 06:57:55
【问题描述】:
可能重复:
How to get adress of a Java Object?
Memory address of variables in Java
Java 中有没有办法查看或写入对象的堆地址。假设我有一个长对象
Long mylong = Long.valueof(1);
我想查看 mylong 的堆地址而不是它的值 (1)。我只是好奇这是否可能!我知道这是可能的,并且可能在应用程序中没有用。但我只是在寻找一种方法来了解 JVM 在某些情况下是如何工作的。
如果你有一个类似 Eclipse 插件的工具,如果你让我知道,我将不胜感激!
【问题讨论】:
-
有一些 unsafe() 方法。但它们不安全,也不快。它们与某些字段一起使用,并且地址是相对的。不是绝对的。然后你也必须坚持一些异常处理!唯一的好处是使用每个字节,无论变量的类型是什么。它类似于 malloc() 但没有 [i] 用法。您使用有开销的 setter 和 getter。
-
我知道它可能不安全且没有必要,但我只想知道 JVM 是如何工作的。所以我不会在生产中使用它。
标签: java memory heap-memory