我应该如何描述间歇性滞后/减速以便在Java中进行优化? (见内部示例)

时间:2013-06-14 06:15:40

标签: java performance optimization profiling

我正在使用Java开发一个动作平台游戏,最近刚刚为敌方单位编写了AI代码。我开始注意到在游戏中的某些点,它会在恢复正常之前减速和滞后。请参阅此视频的示例。滞后部分位于视频的中点,并且有注释,所以你不会错过它:

LoGaP 06.14.2013 on YouTube

我猜它会尝试执行的某些代码成为瓶颈。这通常是内存问题或CPU问题的症状吗?

更重要的是,在这种情况下,最好的方法是确定有问题的代码是什么,以便我可以分析如何优化它?我只用过Java的唯一优化工具是jvisualvm,我只用了一段时间。这会在这种情况下发挥作用吗?

1 个答案:

答案 0 :(得分:1)

分析中的一个常见问题是,您的方法通常在可接受的时间内执行,但偶尔会成为瓶颈。

对整个运行进行概要分析可能对您没有帮助,因为所有其他常规调用都会淹没一次慢速调用。

JProfiler中,您可以标记一个方法,以便单独保存异常方法,并且可以详细检查最慢的操作。您可以使用方法统计信息视图查看呼叫分配并标记它们,以便在那里记录特殊方法:

enter image description here

在调用树视图中,最慢的调用将使用[特殊运行]后缀标记,您可以单独调查其调用树:

enter image description here

免责声明:我公司开发JProfiler。