java进程cpu的使用率是100%高,但完全没有请求,重新启动后该进程将恢复正常。

时间:2018-08-21 05:48:06

标签: jvm jvisualvm thread-dump

这是线程转储文件。 这是一个Tomcat服务。我在日志记录中发现了很多time_waited线程。但没有写入实际日志。

我已经使用jvisualvm监视了完整的gc,但是gc正常。

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

如果您需要任何其他信息,我会提供,真的很想弄清楚。 :D

thread dump

2 个答案:

答案 0 :(得分:0)

这是gc日志,eden空间很快就被填满了,但是有线的是,在次要gc之前和之后,from&to空间都为空,老一代也已经满了,也许对象太多了而不能充满了年轻一代。

enter image description here

答案 1 :(得分:0)

我已使用fastthread.io分析了您的线程转储文件,结果链接为:thread_dump_file_analysis_result

此线程转储存在一些问题:

  • 创建了太多线程,1199。这是高线程数!可能导致java.lang.OutOfMemoryError:无法创建新的本机线程。
  • gc.log也来了。程序会不断创建线程并使fgc发生-当线程对象太大而无法在空间中或从空间创建时,垃圾回收器会尝试在旧空间中分配对象,但是fgc已满。 li>