java进程cpu使用率是100%高,但是根本没有请求,重启时进程恢复正常。

问题描述 投票:0回答:2

这是线程转储文件。这是一个tomcat服务。我在登录时发现了许多线程time_waited。但没有写出实际的日志。

我用jvisualvm来监控full-gc,但是gc是正常的。

我无法从此线程转储中获取任何有用的信息。有可能cpu被卡在while循环中。但是这个线程转储中没有显示任何证据。

如果你需要任何其他信息,我会提供它,真的想弄清楚这一点。 :d

thread dump

jvm jvisualvm thread-dump
2个回答
0
投票

这里是gc日志,伊甸园空间很快就被填满了,但是在小gc之前和之后,来自和到空间都是空的,老一代也是满的,也许对象太多而且无法填充年轻一代。

enter image description here


0
投票

我用fastthread.io分析你的线程转储文件,并且结果链接是:thread_dump_file_analysis_result

这个线程转储存在一些问题:

  • 创建了太多的线程,1199。这是一个高线程数!它可能导致java.lang.OutOfMemoryError:无法创建新的本机线程。
  • gc.log也来了。程序正在不断地创建线程并使fgc发生 - 当线程对象太大而无法在空间中创建时,所以垃圾收集器尝试在旧空间中分配对象,但fgc已满。
© www.soinside.com 2019 - 2024. All rights reserved.