我在 Ubuntu 服务器的后台运行一个 jar。
在某一时刻,应用程序开始消耗过多的 CPU(400%),并且 4 个子进程处于 R 状态:
注意:问题的产生不是因为使用量大,而是在一段时间后(3-4 天)发生的。我们必须关闭 Java 并重新运行它。
编辑添加 GC 日志:
我执行了 java -verbose:gc,这是我在重新启动应用程序和应用程序显示之前解释的问题之间得到的结果。
答案1
Java 进程失控的一个常见原因是它遇到了内存压力,并且大部分时间都花在垃圾收集上。使用 -verbose:gc 运行该进程,当它遇到高 CPU 时,你会看到它在紧密的循环中运行 gc。
答案2
您的 Java 应用程序存在一些问题,导致其出现此问题。您应该研究应用程序的日志以找出原因,并要求应用程序开发人员修复它。