Why does Java spawn so many processes?

2019-02-22 20:30发布

I've written a Java server application that I run on a debian 7 vserver. The application itself workes just fine, but I notices something very strange.

After calling java -Xmx200M -jar "CCU.jar I'd expect to see one Java process running my CCU.jar.

When calling top there is just one java process (as expected). But when I call htop I get this:

htop with strange subprocesses

What are all these subprocesses that seem to be the same process (they have the exactly same data showed in the table) but have different PIDs?

2条回答
放荡不羁爱自由
2楼-- · 2019-02-22 20:46

A java application is never single threaded (Garbage Collector thread among other). So you always end up with several thread. Moreover, Linux implement thread as Light-weight process therefore, each Java thread will appear as a process with a unique PID in htop.

查看更多
神经病院院长
3楼-- · 2019-02-22 20:47

Even the simplest Java application will use several threads for things besides your code. These are for example the garbage collector, finalizer thread and what not.

That many threads indicate that there's some multithreading happening in your application, because Java wouldn't spawn that many just for itself.

查看更多
登录 后发表回答