问题

通过windows的进程管理器看到,cpu 100%,但是内存30%-50%比较很稳定,定位到dubbo service的tomcat工程cpu占了100%

分析

使用%JDK_HOME%/bin/jvisualvm.exe打开线程标签,点击“表”,点击“运行”倒序排列,找到运行时间最长的线程,然后,点击线程Dump在线程dump中查看线程栈,找到出问题的那行代码。

jvm cpu100% 问题分析_jvm

jvm cpu100% 问题分析_递归_02

后来发现是while(condition),condition为true了,所以cpu一直在那,因为不消耗内存,所以内存没问题。如果是一般的递归死循环了,很快就会出现stackoverflow错误。

总结

cpu100%,内存正常的话,推测是类似while死循环导致。