我编写了一个在 debian 7 虚拟服务器上运行的 Java 服务器应用程序。该应用程序本身运行良好,但我注意到一些非常奇怪的事情。
调用后,java -Xmx200M -jar "CCU.jar
我希望看到一个 Java 进程运行我的CCU.jar
.
调用top
时只有一个 java 进程(如预期的那样)。但是当我打电话时,htop
我得到了这个:
哪些子进程看起来是同一个进程(它们具有表中显示的完全相同的数据)但具有不同的 PID?
java 应用程序永远不是单线程的(垃圾收集器线程等)。所以你总是以几个线程结束。此外,Linux 将线程实现为轻量级进程,因此,每个 Java 线程都将表现为一个具有唯一 PID 的进程htop
。
即使是最简单的 Java 应用程序也会使用多个线程来处理代码之外的事情。例如垃圾收集器、终结器线程等等。
这么多线程表明您的应用程序中发生了一些多线程,因为 Java 不会仅仅为自己生成那么多线程。