我已经jmap -heap
在我们正在运行的 Java 应用程序上运行了该命令,这就是我得到的:
C:\Program Files\Java\jdk1.7.0_05\bin>jmap -heap 2384 正在附加到进程 ID 2384,请稍候... 调试器附加成功。检测到服务器编译器。
JVM 版本为 23.1-b03
,在新一代使用并行线程。
使用线程局部对象分配。
Concurrent Mark-Sweep GC
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 = 134217728 (128.0兆)
MaxPermsize = 201326592(192.0MB)
G1HeaPrigionionsize = 0(0.0MB)
堆的用法:
新一代(Eden + 1幸存者空间):
容量= 228261888(217.6875MB) (
217.6875MB
)
used
Eden Space:
capacity = 202964992 (193.5625MB)
used = 198399360 (189.2083740234375MB)
free = 4565632 (4.3541259765625MB)
97.75053226913141% used
From Space:
capacity = 25296896 (24.125MB)
used = 5394640 (5.1447296142578125MB)
free = 19902256 (18.980270385742188兆)
21.325304100550518% 已使用
到空间:
容量 = 25296896 (24.125MB) 已
使用 = 0 (0.0MB)
空闲 = 25296896 (24.125MB)
0.0% 已使用
并发标记-扫描生成:
容量 = 506445824 (482.984375MB) 已
使用 = 2759479140512 (2759479140512)
free = 346966416 (330.89295959472656MB)
31.489924576809226% used
Perm Generation:
capacity = 134217728 (128.0MB)
used = 72157448 (68.81470489501953MB)
free = 62060280 (59.18529510498047MB)
53.76148819923401% used
96874 interned Strings occupying 89695496 bytes.
所以看起来在 68mb 的 Permgen 中大约有 89mb 的实习字符串。是否存在未存储在 Permgen 中的实习字符串?