Java JVM堆空间中单个对象的位置

Java JVM堆空间中单个对象的位置,java,jvm,Java,Jvm,我能够在JVM级别使用各种工具监控java应用程序。我可以转储堆对象并找出对象的数量及其总大小 此时,我想知道每个对象的堆位置,我的意思是,正如您可能知道的,在转储时有三个堆部分(eden、old、perm空间),哪个对象位于哪个堆空间。单个对象的位置是您无法跟踪的。仅转储堆即可导致对象移动。无论你想做什么,我建议你换一种方式 顺便说一句:如果您转储“活动”对象,这将触发一个完整的GC,它可以将所有对象移动到旧的gen中,因此在这种情况下,您知道所有对象的位置。;) 所以我们可以说,我无法追踪单

我能够在JVM级别使用各种工具监控java应用程序。我可以转储堆对象并找出对象的数量及其总大小


此时,我想知道每个对象的堆位置,我的意思是,正如您可能知道的,在转储时有三个堆部分(eden、old、perm空间),哪个对象位于哪个堆空间。

单个对象的位置是您无法跟踪的。仅转储堆即可导致对象移动。无论你想做什么,我建议你换一种方式


顺便说一句:如果您转储“活动”对象,这将触发一个完整的GC,它可以将所有对象移动到旧的gen中,因此在这种情况下,您知道所有对象的位置。;)

所以我们可以说,我无法追踪单个物体的位置。不,如果你有足够的物体,我想你不会想要的。e、 数百万。你想解决什么问题,因为可能有不同的解决方案?实际上我目前没有任何问题要解决。我相信跟踪可能是了解JVM如何分配对象和GC如何工作的最好方法。您可以慢慢创建保留的对象,并看着它们从eden迁移到survivor,再迁移到old gen。您可以使用
VisualVM
jstat-gccause{pid}
-verbosegc