繁体   English   中英

VisualVM:理想的堆内存使用图

[英]VisualVM: Ideal Heap Memory Usage Graph

我正在使用VisualVM监视我的Java应用程序(用JDK 1.7编写)。 以下是显示此应用程序运行的持续时间内堆内存使用情况的图表。

在此输入图像描述

看看这张图,可以看出它中有很多尖峰。 这些峰值表示应用程序创建对象。 一旦应用程序完成它们,它就会使用gc(在本例中隐式调用)来销毁它们。

此外,这是应用程序仍在运行时内存分析器的屏幕截图

在此输入图像描述

对我来说,图的上下性质表明了java对象的有效使用。 这个推论是对的吗?

人们应该瞄准的堆使用图的理想性质是什么?

有没有其他方法可以改善我的应用程序的堆内存使用情况?

对我来说,图的上下性质表明了java对象的有效使用。 这个推论是对的吗?

我会说它有效地使用垃圾收集器。 我建议创建更少的对象可能更有效。

人们应该瞄准的堆使用图的理想性质是什么?

这取决于您的申请。 我倾向于瞄准一个几乎完全平坦的。

有没有其他方法可以改善我的应用程序的堆内存使用情况?

加载

  • 减少垃圾。 使用内存分析器查找正在创建垃圾的位置。
  • 使堆更大,因此它不经常GC。
  • 将保留的数据从堆中移出(您似乎没有很多)

在您的情况下,最好的选择是减少您生产的垃圾量。

只要堆大小随着时间的推移保持几乎相同,你就可以了。 由于在Sun JVM中暂停世界gc的性质,使用的堆应该上下移动。 看起来在您的应用程序中生成了许多短期对象,它可能效率低下,但有时您需要创建它们。 这是Java的生活方式:D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM