java进程cpu使用率是100%高,但是根本没有请求,重启时进程恢复正常。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java进程cpu使用率是100%高,但是根本没有请求,重启时进程恢复正常。相关的知识,希望对你有一定的参考价值。
这是线程转储文件。这是一个tomcat服务。我在登录时发现了许多线程time_waited。但没有写出实际的日志。
我用jvisualvm来监控full-gc,但是gc是正常的。
我无法从此线程转储中获取任何有用的信息。有可能cpu被卡在while循环中。但是这个线程转储中没有显示任何证据。
如果你需要任何其他信息,我会提供它,真的想弄清楚这一点。 :d
答案
这里是gc日志,伊甸园空间很快就被填满了,但是在小gc之前和之后,来自和到空间都是空的,老一代也是满的,也许对象太多而且无法填充年轻一代。
另一答案
我用fastthread.io分析你的线程转储文件,并且结果链接是:thread_dump_file_analysis_result
这个线程转储存在一些问题:
- 创建了太多的线程,1199。这是一个高线程数!它可能导致java.lang.OutOfMemoryError:无法创建新的本机线程。
- gc.log也来了。程序正在不断地创建线程并使fgc发生 - 当线程对象太大而无法在空间中创建时,所以垃圾收集器尝试在旧空间中分配对象,但fgc已满。
以上是关于java进程cpu使用率是100%高,但是根本没有请求,重启时进程恢复正常。的主要内容,如果未能解决你的问题,请参考以下文章