为什么Java会产生如此多的进程?

时间:2014-08-26 09:50:41

标签: java process debian htop

我编写了一个我在debian 7 vserver上运行的Java服务器应用程序。应用程序本身运行得很好,但我注意到一些非常奇怪的东西。

调用java -Xmx200M -jar "CCU.jar后,我希望看到一个Java进程运行CCU.jar

调用top时,只有一个java进程(如预期的那样)。但是当我打电话给htop时,我得到了这个:

htop with strange subprocesses

所有这些子进程看起来是同一个进程(它们在表中显示的数据完全相同)但是有不同的PID?

2 个答案:

答案 0 :(得分:6)

java应用程序从不是单线程的(垃圾收集器线程等)。所以你总是得到几个线程。此外,Linux将线程实现为Light-weight process因此,每个Java线程将在htop中显示为具有唯一PID的进程。

答案 1 :(得分:3)

即使是最简单的Java应用程序也会使用多个线程来处理代码之外的事情。这些是例如垃圾收集器,终结器线程和什么不是。

许多线程表明在你的应用程序中发生了一些多线程,因为Java不会为自己产生那些多线程。