jstack 31066 |grep 'nid=795A'
用jmap -heap pid 查看内存使用情况(可以观察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的内存使用情况),数据如下:
Attaching to process ID 6736, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 20.1-b02
using thread-local object allocation.
Parallel GC with 18 thread(s)
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 1073741824 (1024.0MB)
NewSize = 1310720 (1.25MB)
MaxNewSize = 17592186044415 MB
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 1073741824 (1024.0MB)
MaxPermSize = 1073741824 (1024.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 167968768 (160.1875MB)
used = 167968768 (160.1875MB)
free = 0 (0.0MB)
100.0% used
From Space:
capacity = 72548352 (69.1875MB)
used = 0 (0.0MB)
free = 72548352 (69.1875MB)
0.0% used
To Space:
capacity = 99221504 (94.625MB)
used = 0 (0.0MB)
free = 99221504 (94.625MB)
0.0% used
PS Old Generation
capacity = 715849728 (682.6875MB)
used = 715849608 (682.687385559082MB)
free = 120 (1.1444091796875E-4MB)
99.99998323670523% used
PS Perm Generation
capacity = 1073741824 (1024.0MB)
used = 84353312 (80.44558715820312MB)
free = 989388512 (943.5544128417969MB)
7.856014370918274% used
从上面可以看出:Eden Space 使用率为100.0%,PS Old Generation 使用率为99.99998323670523%
以上是内存的占用情况。
--------------------------------------------可恶的分割线---------------------------------------------
根据http://longtask.com/Java/2011/10/26/slave-java-cpu100-problem/ 查看的最耗时线程信息如下:
"VM Thread" prio=10 tid=0x0000000040192800 nid=0x1a64 runnable
最后内存溢出了:
Caused by: java.lang.IllegalStateException: this writer hit an OutOfMemoryError; cannot flush