【发布时间】:2014-10-09 16:11:36
【问题描述】:
我正在使用VisualVM 监控我的Java 应用程序(用JDK 1.7 编写)。以下图表显示了此应用程序运行期间的堆内存使用情况。
查看此图可以发现其中有很多尖峰。这些尖峰表明应用程序创建了对象。一旦应用程序处理完它们,它就会使用 gc 销毁它们(在这种情况下被隐式调用)。
另外,这是应用程序仍在运行时内存分析器的屏幕截图
对我来说,图表的上下性质表明 Java 对象的有效使用。这个推论对吗?
人们应该瞄准的堆使用图的理想性质是什么?
还有其他方法可以提高我的应用程序的堆内存使用率吗?
【问题讨论】:
-
随着时间的推移,正确的节目节目会产生更多的短命对象。可能,这可以优化。
-
您的内存使用情况看起来非常好
-
@VictorSorokin JVM GC 可以很好地处理许多短期对象。这不是问题。
-
@VictorSorokin 峰值确实表明,一旦对象超出其范围,gc 就会被隐式调用并杀死它们。
-
实际上,是否有问题由 OP 决定。通常,随着垃圾产生的速度越来越快,GC 的调用频率会越来越高,从而从应用程序本身中窃取 CPU 时间。我相信,OP 对此并不在意,但在极端情况下,它可能会导致
OutOfMemory:stackoverflow.com/a/1393503/162634
标签: java performance heap-memory visualvm