2014-11-24 2 views
0

Я подозреваю, что у моего приложения есть утечка памяти. У меня есть журналы GC, и когда я смотрю на них, я вижу, что использование памяти составляет около 9-10 ГБ. Затем я пытаюсь сбрасывать память в файл, размер файла составляет около 5 ГБ.JRockit полная память dump

Вопрос в том, почему дамп не имеет 9 ГБ, но только 5 ГБ? Как заставить jrcmd сбрасывать полную память?

команды, которые я использую:

jrcmd 11906 hprofdump filename=/path_to_dump/dump.hprof 

JVM:

Java(TM) Platform, Standard Edition for Business (build 1.5.0_28-b04) 
Oracle JRockit(R) (build R28.1.3-11-141760-1.5.0_28-20110301-1432-linux-x86_64, compiled mode) 

Update:

Проблема не в том, что из-за бревен GC память не освобождается до уровня, ниже 9GB , Инструмент JDK усечен сбрасыванием до 5 ГБ. Зачем?

ответ

0

Я предполагаю, что JRockit ведет себя аналогично HotSpot: если ваш живой набор данных составляет всего 5 ГБ, тогда дамп также составляет всего 5 ГБ. Я предполагаю, что только 5 ГБ ваших 9-10 живут.

+0

Но из-за записи GC моя память никогда не освобождается ниже 9 ГБ. Почему эти мусора не освобождаются GC, но опущены инструментом? – lbednaszynski

+0

Являются ли эти полные GC или инкрементальные GC? Ожидается, что для дополнительных GC не очистить весь мусор? –

0

Как выглядит ваш журнал GC?

Кстати, вы пробовали инструмент управления миссией JRockit под названием Memleak? Это может быть полезно для обнаружения утечек памяти.