在我们的生产tomcat部署(Tomcat 8 + JVM 8)中,我们最近开始观察到,有时垃圾回收线程开始使用100%cpu。 这不是使用高峰。当发生这种情况时,该行为仍然存在,唯一的补救措施是重新启动系统。
我们在这段时间内进行了堆转储,但是不幸的是,转储文件无法使用任何工具-jhat或jvisualvm打开。因此,我们无法查明分配发生的代码。
为什么会发生这种情况?是因为应用程序创建了很多对象并且处理需要很长时间吗?
(注意:我们确实具有内存密集型功能;因此,OutofMemoryError比100%的cpu使用率有意义)