2011-04-05 66 views
0

我有一个应用程序运行相当长的分析(大量的数字处理),所以运行应用程序一次需要大约3-4小时,充分利用所有的核心。现在我非常确定我的代码不是水密的,所以我想分析并寻找潜在的弱点。在jvisualvm中可以同时执行CPU和内存分析吗?

我一直在阅读jvisualvm上的一些内容,并且还对它进行了一些调整。然而,它表现为一个人选择CPU或内存的剖析,同时this article从的Javalobby有一个有趣的报价在这里笔者说:

我意识到,无论是CPU和内存概要分析可能已经同时完成,但为宗旨这篇文章我想让他们分开。

任何人都可以否认或确认这一点吗?如果这可能会非常有用,所以我不会一遍又一遍地以不同的模式进行配置。如果这是不可能的,是否可以排队进行不同的分析分析,以便我可以在一夜之间运行它们?

感谢,

回答

2

不可能一起完成CPU和内存分析,但您可以非常轻松地在CPU和内存之间切换,尤其是在使用“采样器”选项卡时。对于你的情况,我会从简单的监控开始。看看图表,你应该能够知道,如果你有没有记忆问题。如果你有内存问题,我会尝试先解决它,并把你的注意力转向CPU分析。

+0

感谢Tomas。你认为可以排队分析事件没有太多头痛吗?还是它要求太多? :) – posdef 2011-04-06 07:22:57

+0

我不确定'排队分析事件'是什么意思。你有什么样的事件? – 2011-04-06 12:06:58

+0

我想X分钟CPU分析,Y分钟内存分析,Z最小采样等。然而,第二个想法,我意识到,它不是一个真正的聪明的方式去反正.. – posdef 2011-04-06 12:39:49

0

我发现廓往往低估对象分配的成本,所以我通常能够与CPU性能分析内存分析,因为我觉得这给出了一个更现实的CPU性能分析结果。 (即使我不看存储器分析报告)

如果有疑问,我建议你运行CPU配置文件,有和没有内存分析,你可以得到非常不同的结果。根据我的经验,这两项结果都值得优化。 ;)

顺便说一句:我使用YourKit,但我不认为VisualVM在这方面会有很大的不同。

+0

感谢Peter的快速回复,尽管我想我可能在这个问题上不清楚。是否有可能同时运行两个分析?如果是这样,怎么样? – posdef 2011-04-05 08:44:47

+0

我假设每个人都有一个单独的按钮。点击两者会发生什么? – 2011-04-05 08:48:14

+0

是的,它显示为从一种类型到另一种类型的配置文件切换。用于初始化仪器的应用程序块需要很长时间,所以我没有真正尝试等待底层应用程序完成执行,因为正如我所提到的,它几乎消耗了所有处理器能力(旨在这样做)需要很长时间才能完成。我希望从类似的经历中学习社区中的其他人可能有过的经历(或许有更简单的例子) – posdef 2011-04-05 09:01:18