如何解释性能分析结果?
我使用NetBeans和VisualVM运行了内存分析器,并收到了结果,但没有线索如何分析其结果,我研究了这篇文章,但没有教导或提供关于如何解释结果的线索。
我也发现了这篇关于在Netbeans 4上解释结果的文章,但是我正在寻找一篇更详细的文章,或者一种解释以下结果的方法来学习。
您在问题中粘贴的遥测图中确实没有太多的信息。
传达的是什么
我敢打赌,在内存可视化器中传输的锯齿图案是您的程序启动 - 否则为什么事情似乎在最后一分钟左右平滑其他。 您的问题中显示的3分钟内您的应用程序是否承受过任何负载?
作为一个起点,我会研究一下当你的程序做了一些繁重的工作时,你的程序花费了多少时间在GC(GC中的相对时间)上。 如果它超过5%,你可以考虑调整你的堆或进一步挖掘分配的位置。
接下来我会寻找一个瓶颈。 找出应用程序花费大部分时间的位置,然后查看是否可以以某种方式优化代码。
我不太了解netbeans中的profiler,但我更喜欢visualvm
。 它具有广泛的性能分析。 https://visualvm.java.net/
VisualVM是一个集成了几个命令行JDK工具和轻量级分析功能的可视化工具。 专为生产和开发时间而设计,它进一步增强了Java SE平台的监控和性能分析能力
内存测试的示例程序
public class MemoryTest {
public static void main(String[] args) {
ArrayList<String> temp = new ArrayList<String>();
for (int i = 0; i < 1000000; i++) {
temp.add(String.valueOf(i));
System.out.println("index:" + temp.get(i));
}
System.out.println(temp.size());
}
}
打开visualvm
。 它会在左侧列出你的程序。 它会为您提供多种选项来测试您的程序对Memory
和CPU
。 您也可以使用它来分析特定的软件包。
这个入口不是特定于Netbeans 7,但是在JVM内存使用和分析基础方面确实有一些很好的简单入门者。 有时,对基础知识的更好理解揭示了更好的编程技术,以避免未来的内存问题。 http://java.dzone.com/articles/java-memory-model-simplified
链接地址: http://www.djcxy.com/p/19905.html