我有一个运行相当长的分析(大量数字运算)的应用程序,因此运行应用程序需要大约3-4个小时,充分利用所有核心。现在我很确定我的代码不是防水的,所以我想描述并寻找潜在的弱点。
我一直在读jvisualvm,并且也玩了一下。然而,它似乎选择cpu或内存分析,而来自Javalobby的this article有一个有趣的引用,作者说:
我意识到CPU和内存分析都可以同时完成,但为了本文的目的,我想让它们分开。
有人可以否认或证实吗?如果这是可能的,它将非常有用,所以我不会反复开始以不同模式进行分析。如果不可能,是否可以排队到不同的分析分析,以便我可以在一夜之间运行它们?
谢谢,
答案 0 :(得分:2)
无法一起进行CPU和内存分析,但您可以非常轻松地在CPU和内存之间切换,尤其是在使用“Sampler”选项卡时。对于您的情况,我将从简单的监控开始。查看图表,您应该能够判断出是否存在内存问题。如果你有内存问题,我会先尝试修复它,然后把注意力转向CPU分析。
答案 1 :(得分:0)
我发现分析器倾向于低估对象分配的成本,所以我通常使用cpu分析启用内存分析,因为我觉得这给出了更真实的CPU分析结果。 (即使我不查看内存分析报告)
如果有疑问,我建议您运行CPU配置文件,无论是否有内存分析,您都可以得到非常不同的结果。根据我的经验,值得对两种结果进行优化。 ;)
BTW:我使用的是YourKit,但我不认为VisualVM在这方面会有很大不同。