Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does Java spawn so many processes?

I've written a Java server application that I run on a Debian 7 VServer.

The application itself works just fine, but I notices something very strange.

Issue

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?

like image 699
MinecraftShamrock Avatar asked Aug 26 '14 09:08

MinecraftShamrock


2 Answers

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.

like image 175
ortis Avatar answered Nov 19 '22 22:11

ortis


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.

like image 25
Kayaman Avatar answered Nov 19 '22 22:11

Kayaman