我正在使用Java开发一个动作平台游戏,最近刚刚为敌方单位编写了AI代码。我开始注意到在游戏中的某些点,它会在恢复正常之前减速和滞后。请参阅此视频的示例。滞后部分位于视频的中点,并且有注释,所以你不会错过它:
我猜它会尝试执行的某些代码成为瓶颈。这通常是内存问题或CPU问题的症状吗?
更重要的是,在这种情况下,最好的方法是确定有问题的代码是什么,以便我可以分析如何优化它?我只用过Java的唯一优化工具是jvisualvm,我只用了一段时间。这会在这种情况下发挥作用吗?
答案 0 :(得分:1)
分析中的一个常见问题是,您的方法通常在可接受的时间内执行,但偶尔会成为瓶颈。
对整个运行进行概要分析可能对您没有帮助,因为所有其他常规调用都会淹没一次慢速调用。
在JProfiler中,您可以标记一个方法,以便单独保存异常方法,并且可以详细检查最慢的操作。您可以使用方法统计信息视图查看呼叫分配并标记它们,以便在那里记录特殊方法:
在调用树视图中,最慢的调用将使用[特殊运行]后缀标记,您可以单独调查其调用树:
免责声明:我公司开发JProfiler。