我们想为我们的 Java 应用程序调整内存生成池的大小。为此,我们首先需要了解堆是如何使用的。本质上,我们需要知道 JVM 堆中每个对象的数量、大小和生命周期。在我们收集了这些数据之后,我们应该能够找到更适合我们的年轻代和终身代池的规模。
我们的调优工作基于 Sun/Oracle 的“使用 5.0 JVM 调优垃圾收集”白皮书中的信息。在第 3 节(http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html#1.1.%20Generations%7Coutline)中,他们讨论了生成大小并在对象生命周期图上展示了一个示例。几乎是我们试图为我们的应用程序实现的目标。
到目前为止,我们已经能够记录给定类的实例数量以及它们在内存中各自的大小。但是我无法找到一种方法来提取平均实例寿命。现在我们正在研究 jProfiler,但到目前为止还没有成功。
有没有人成功地绘制了 Java 应用程序的平均对象生命周期?