前几天试用了一下JProfiler,改善了几个性能问题。今天有人指派了两个卡死。大哥汝说代码这么多,谁知道卡死在哪里?吾灵机一动,卡死不就是死循环吗?死循环就是占用CPU太多;占用CPU太多,就是性能问题。好办。吾随即用JProfiler进行测试:
- 有一个BUG卡死之后,CPU占用不再变化。说明了什么?说明没有死循环。那跟踪一下流程,原来是卡死在一个控件处理上。注释语句,功能就正常。转负责人看看。
- 另外一个BUG确实是死循环,CPU不断增长。找到占用多的一个函数,打个断点,再查找上游下游的循环。别说,马上就找到了,加个输出证明确实是卡死所在。卡死原因?取一个子视图一直没变化,于是就卡死了。这好办,加个判断就解决了。
以后再碰到死机,咱就用这个再跑一下,找卡死位置就容易多了。