In a linux server(fedora), we run a single JBOSS Application Server, and we use quartz to schedule our task.
Yesterday,
I use a top command to view process status
see more than one processes named Java with different pid are displayed.
But if i use ps aux|grep java only one java process(Jboss AS) is displayed?
So my question would be:
Is a java thread mapped to native linux thread(cloned process), or does top not show threads?
Env:
Kernerl: 2.6.18
JDK: 1.6.0-23
解决方案
It depends on your versions of various tools. Most likely, you have a version of top that doesn't understand the relationship between threads and processes on Linux, resulting in it incorrectly showing each thread as its own process. The implementation of Java threads depends on your VM, but the typical implementation on modern JVMs and Linux versions is 1-to-1, that is, each Java thread is a Linux KSE created by the clone system call.
If you have a Linux distribution that came out within the past three years, you shouldn't have this issue.