Я запустил команду jmap -heap
в нашем исполняемом Java-приложении, и вот что я получил:
C:\Program Files\Java\jdk1.7.0_05\bin > jmap -heap 2384 Присоединение к процессу ID 2384, пожалуйста, подождите... Отладчик успешно подключен. Определен компилятор сервера.
Версия JVM - 23.1-b03
используя параллельные потоки в новом поколении.
используя распределение локальных потоков.
Параллельный Mark-Sweep GC
Конфигурация кучи:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 1073741824 (1024,0 МБ)
NewSize = 1310720 (1,25 МБ)
MaxNewSize = 17592186044415 МБ
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 134217728 (128.0MB)
MaxPermSize = 201326592 (192.0MB)
G1HeapRegionSize = 0 (0.0MB)
Использование кучи:
Новое поколение (Eden + 1 Survivor Space):
емкость = 228261888 (217.6875MB)
used = 203794000 (194.3531036376953MB)
free = 24467888 (23.334396362304688MB)
89.28078260703775% использовано
Eden Space:
емкость = 202964992 (193.5625MB)
used = 198399360 (189.2083740234375MB)
free = 4565632 (4.3541259765625MB)
97.75053226913141% использовано
Из космоса:
емкость = 25296896 (24.125MB)
used = 5394640 (5.1447296142578125MB)
free = 19902256 (18.980270385742188MB)
21.325304100550518% использовано
Космос:
емкость = 25296896 (24.125MB)
used = 0 (0.0MB)
free = 25296896 (24.125MB)
0.0% использовано
одновременная генерация маркеров:
емкость = 506445824 (482.984375MB)
used = 159479408 (152.09141540527344MB)
бесплатно = 346966416 (330.89295959472656MB)
31.489924576809226% использовано
Пермское поколение:
емкость = 134217728 (128.0MB)
used = 72157448 (68.81470489501953MB)
free = 62060280 (59.18529510498047MB)
53.76148819923401% использовано
96874 интернированных строк, занимающих 89695496 байт.
Таким образом, похоже, что в 68 млн. пермгенов насчитывается около 89 мб интернированных строк. Существуют ли интернированные строки, которые не хранятся в Permgen?