找出Java中的内存分配热点

我们的GC正在努力工作,我们有一些想要减少的暂停。我们有一些内存分配问题,我们希望在使用实际的 JVM GC 参数进行调整之前或调整时解决这些问题。

我想知道哪些物体使GC出汗:

  1. 有没有办法知道每次GC工作时哪些物体被疏散?
  2. 有没有办法知道每次GC工作时哪些对象在区域之间移动?
  3. 有没有办法知道哪些物体在伊甸园地区?

我正在与Jprofiler和Memory Analyzer广泛合作。我想获取有关过渡环境中正在运行的应用程序的此信息。


答案 1

对于 2 和 3,您可以在应用程序的运行会话期间将 and 标志与 Oracle 或 OpenJDK 可执行文件一起使用-XX:+PrintGCDetails-XX:+PrintGCTimeStampsjava


答案 2

对于问题 1,可以使用幻像引用。这将允许您在对象被GC'ed(或GC-able)时收到通知。

至于另外两个,我不太清楚。


推荐