不在permgen的实习字符串?

Vic*_*Vic 15 java string permgen

我在运行的jmap -heapJava应用程序上运行命令,这是我得到的:

C:\ Program Files\Java\jdk1.7.0_05\bin> jmap -heap 2384附加到进程ID 2384,请稍候...调试器已成功附加.服务器编译检测到 在新一代中使用并行线程的
JVM版本是23.1-b03

.
使用线程局部对象分配.
并发标记扫描GC

堆配置:
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 MB)
MaxPermSize = 201326592(192.0MB)
G1HeapRegionSize = 0(0.0MB)

堆用法:
新一代(Eden + 1 Survivor Space):
容量= 228261888(217.6875MB)
使用= 203794000(194.3531036376953MB)
free = 24467888(23.334396362304688MB)
89.28078260703775%使用
伊甸园空间:
容量= 202964992(193.5625MB)
使用= 198399360(189.2083740234375MB)
免费= 4565632(4.3541259765625MB)
97.75053226913141%使用
空间:
容量= 25296896(24.125MB)
使用= 5394640(5.1447296142578125MB)
free = 19902256 (18.980270385742188MB)
21.325304100550518%用于
空间:
容量= 25296896(24.125MB)
使用= 0(0.0MB)
自由= 25296896(24.125MB)
0.0%使用
并发标记扫描生成:
容量= 506445824(482.984375MB)
使用= 159479408 (1 52.09141540527344MB)
free = 346966416(330.89295959472656MB)
31.489924576809226%使用的
Perm生成:
capacity = 134217728(128.0MB)
used = 72157448(68.81470489501953MB)
free = 62060280(59.18529510498047MB)
53.76148819923401%used

96874 interned Strings占用89695496字节.

所以在Permgen的68mb里似乎有大约89mb的实习字符串.是否存在未存储在Permgen中的实习字符串?

dce*_*chi 23

Java 7发行说明:

在JDK 7中,实现的字符串不再分配在Java堆的永久生成中,而是分配在Java堆的主要部分(称为年轻和旧的代)中,以及应用程序创建的其他对象.此更改将导致更多数据驻留在主Java堆中,并且永久生成中的数据更少,因此可能需要调整堆大小.由于此更改,大多数应用程序将只看到堆使用中的相对较小的差异,但是加载许多类或大量使用String.intern()方法的较大应用程序将看到更显着的差异.