Why does Java spawn so many processes?

2019-02-22 20:03发布

问题:

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:

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?

回答1:

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.



回答2:

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.