![java 占用了 100% 的 CPU,无法停止](https://linux22.com/image/821930/java%20%E5%8D%A0%E7%94%A8%E4%BA%86%20100%25%20%E7%9A%84%20CPU%EF%BC%8C%E6%97%A0%E6%B3%95%E5%81%9C%E6%AD%A2.png)
我遇到过 java 进程
- 无需任何重启即可启动(但不应运行任何 Java 应用程序),并且
- 一段时间后 CPU 使用率达到 100%(AMD Phenom II X4)
我用 gnome 系统监视器将其杀死。几秒钟后,该进程再次出现,再次占用 100% 的 CPU(状态:睡眠)。
我也对以下事实感到恼火:
$ jobs
没有返回任何内容。我会尝试
sudo jobs
为了好玩,收到了消息
sudo:作业:未找到命令
但 jobs 当然已安装。
我已通过软件中心安装了 OpenJDK Java 6 Runtime。
我该如何
- 查找是否仍有使用 java 的程序正在运行
- 为什么该过程占用那么多 CPU?
答案1
jobs
仅显示当前 shell 拥有的进程(这是 shell 内置函数 —— 这就是为什么您不能使用 sudo 来运行它,因为 sudo 只运行可执行程序)。除非您在后台启动它,否则它通常不会显示任何内容。请参阅help jobs
。
您可以使用以下命令检查是否有其他 Java 进程正在运行:
ps aux | grep java
ps aux | grep java | grep -v grep
这将搜索命令行执行中包含字符串“java”的任何正在运行的进程,包括 grep。如果需要,可以使用 来消除 grep 。
此外,当某个进程占用大量 CPU 时,您通常可以使用程序发现它top
,按下P以按 %CPU 排序:
您还可以使用M按内存使用情况排序,并使用键<和>更改用于排序的当前字段。
现在,为什么一个进程占用了多少 CPU 是一个很难用一般方式回答的问题。它可能正在执行有用的操作,也可能只是陷入无限循环,通常只有通过阅读源代码才能找出原因。如果您考虑在浏览器中运行 Java 插件的 Java JRE,其 CPU 负载高度依赖于您正在运行的程序的性质。