Java 1.7.45: Как получить полный дамп кучи процесса вместо усеченного дампа
Я использую команду ниже, чтобы получить дамп кучи
jmap -dump:live,format=b,file=/tmp/heap2.bin <pid>
VM выбирает:
-Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=1500
-XX:G1HeapRegionSize=2 -XX:+PrintFlagsFinal -XX:ParallelGCThreads=4 -XX:ConcGCThreads=2
But this command generates 300+ MB bin heap dump file for process running with 1.2 GB memory
(1,2 ГБ памяти было показано в столбце RES верхней команды)
РЕДАКТИРОВАТЬ: я удалил: live опция после предложения @kdgregory, но дамп кучи не генерируется из-за G1GC
проблема (связанный вопрос SE: ошибка дампа кучи Java с помощью команды jmap: преждевременный EOF)
Мои запросы:
Как получить полный дамп процесса с другими алгоритмами GC, такими как CMS?
Как получить дамп кучи вместе с памятью PermGen тоже? (permstat из командной строки для меня бесполезен). Меня также интересует анализ ошибки PermGen OutOfMemory.