lichtjiang
Programmer
A java server seemss to pause for a long time. How to find what it is doing and where it is? Thanks.
The following is exceprt of top -p output:
VIRT RES SHR S %CPU %MEM
638m 339m 11m S 102 9.0
And the following is extracted from stack trace by sending "kill -QUIT" to the program:
"Finalizer" daemon prio=1 tid=0x08116350 nid=0x4e45 in Object.wait() [0x94f1c000..0x94f1ceb0]
at java.lang.Object.wait(Native Method)
- waiting on <0x9942c858> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
- locked <0x9942c858> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=1 tid=0x08114c70 nid=0x4e44 in Object.wait() [0x94f9d000..0x94f9de30]
at java.lang.Object.wait(Native Method)
- waiting on <0x993d01a8> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:474)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0x993d01a8> (a java.lang.ref.Reference$Lock)
other threads show runnable w/o "waiting" or "locked" status. But there is no sign for identifying *CURRENT THREAD*.
So, does this mean that everything is fine but it only takes long time running? Any thoughts, thanks!
The following is exceprt of top -p output:
VIRT RES SHR S %CPU %MEM
638m 339m 11m S 102 9.0
And the following is extracted from stack trace by sending "kill -QUIT" to the program:
"Finalizer" daemon prio=1 tid=0x08116350 nid=0x4e45 in Object.wait() [0x94f1c000..0x94f1ceb0]
at java.lang.Object.wait(Native Method)
- waiting on <0x9942c858> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
- locked <0x9942c858> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=1 tid=0x08114c70 nid=0x4e44 in Object.wait() [0x94f9d000..0x94f9de30]
at java.lang.Object.wait(Native Method)
- waiting on <0x993d01a8> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:474)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0x993d01a8> (a java.lang.ref.Reference$Lock)
other threads show runnable w/o "waiting" or "locked" status. But there is no sign for identifying *CURRENT THREAD*.
So, does this mean that everything is fine but it only takes long time running? Any thoughts, thanks!