powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / HeapDumpOnOutOfMemoryError
25 сообщений из 59, страница 1 из 3
HeapDumpOnOutOfMemoryError
    #36862871
Landsknecht
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,
подскажите, как в можно получить дамп памяти..по событию OutOfMemory
приложение на tomcate зависает со следующими симптомами

Код: plaintext
1.
2.
7195K->87195K(164480K)] [PSOldGen: 524288K->524288K(524288K)] 611483K->611483K(688768K) [PSPermGen: 21110K->21110K(24576K)],  12 , 9164580  secs]
 56895 , 718 : [Full GC [PSYoungGen: 87195K->86956K(164480K)] [PSOldGen: 524288K->524287K(524288K)] 611483K->611244K(688768K) [PSPermGen: 21110K->21110K(24576K)],  16 , 3446225  secs]

пробовал использовать параметр -XX:+HeapDumpOnOutOfMemoryError
но при зависании файл дампа не создался.

система со следующей конфигурацией

Код: plaintext
1.
2.
3.
4.
$ java -version
java version "1.5.0_14"
Java(TM)  2  Runtime Environment, Standard Edition (build  1 . 5 .0_14-b03)
Java HotSpot(TM) Server VM (build  1 . 5 .0_14-b03, mixed mode)

Код: plaintext
1.
2.
3.
$ uname -a
SunOS  5 . 10   sun4v sparc SUNW,SPARC-Enterprise-T5120
$
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #36862897
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stop-the-world GC это ещё не OutOfMemoryError.
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #36862972
Landsknecht
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за участие!
BlazkowiczStop-the-world GC это ещё не OutOfMemoryError.

бываеет и такое
Код: plaintext
1.
java.lang.OutOfMemoryError: Java heap space

но в основном сейчас вижу такого типа ошибки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
[Loaded sun.reflect.GeneratedSerializationConstructorAccessor151 from __JVM_DefineClass__]
 68 	at java.net.SocketOutputStream.socketWrite0( Native  Method) 56588 , 662 : [Full GC [PSYoungGen: 87372K->86677K(164480K)] [PSOldGen: 524288K->524288K(524288K)] 611660K->610965K(688768K) [PSPermGen: 21100K->21099K(24576K)],  16 , 6330272  secs]

	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java: 92 )
	at java.net.SocketOutputStream.write(SocketOutputStream.java: 136 )

	at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java: 65 ) 91 

	at java.io.BufferedOutputStream.flush(BufferedOutputStream.java: 123 ) 68 

на что бы обратить внимание...для определения причин утечки памяти, очень хочется получить дамп(
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #36863058
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот когда такое бывает
java.lang.OutOfMemoryError: Java heap space

тогда и должен сгенерится дамп. Но вообще это не всегда работает, потому как JVM может не хватить памяти на то чтобы сгенерить дамп. Лучше мониторить хип, а потом снять дамп по запросу.

-XX:+HeapDumpOnCtrlBreak выставить, а потом как куча забита kill -3 PID
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #36863856
Landsknecht
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
большое спасибо!

ели для вас не будет трудом, скажите, что может быть причиной возникновения
Код: plaintext
Stop-the-world GC

и не сочтите за наглость

Код: plaintext
1.
-XX:+HeapDumpOnCtrlBreak выставить, а потом как куча забита kill - 3  PID

т.е. при этом параметре HeapDumpOnCtrlBreak будут видны процессы, которые при их возникновении можно будет убивать системной утилитой kill?
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #36864053
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landsknecht
ели для вас не будет трудом, скажите, что может быть причиной возникновения Stop-the-world GC

Память расходуется на столько быстро что parallel GC не успевает всё собрать. А так же слишком большое количество объектов в tenured.
http://rsdn.ru/forum/java/3130448.aspx
http://rsdn.ru/forum/java/3633267.1.aspx


Landsknechtт.е. при этом параметре HeapDumpOnCtrlBreak будут видны процессы, которые при их возникновении можно будет убивать системной утилитой kill?
Нет. Kill -3 просто посылает процессу команду. Процесс её получает и вываливает дамп потоков в System out. А если эта опция включена, то ещё и дапм кучи.
Эту опцию с какого-то перепуга убрали в Java 6. Дамп памяти так же можно получить через jmap и visualvm. Первый консольный, второй - гуёвый.
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #36864578
Landsknecht
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
а в этом случаи может возыметь действие по оптимизации работы GC, включение различных параметров
к примеру -XX:+UseParallelGC и подобных?

спасибо большое за развернутый ответ!
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #36864592
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Landsknecht а в этом случаи может возыметь действие по оптимизации работы GC, включение различных параметров
к примеру -XX:+UseParallelGC и подобных?

Оптимизация GC это коплексный процесс. Простое включение параметров не поможет. Нужно понимать что делает каждый ключ. Как это отразится на системе. И как нужно поменять значение именно под вашу систему.
Обычно с этим заморчиваются только для высоконагруженых систем. В других случаях вполне достаточно оптимизировать код.
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #36875075
Landsknecht
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
добрый день! получил дамп по java.lang.OutOfMemoryError
если вам не в тягость, посоветуйте чем его можно обработать, для наглядности...
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #36875082
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LandsknechtBlazkowicz,
добрый день! получил дамп по java.lang.OutOfMemoryError
если вам не в тягость, посоветуйте чем его можно обработать, для наглядности...
VisualVM (JDK/bin/jvisualvm.exe)
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #36875465
Dany305
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LandsknechtBlazkowicz,
добрый день! получил дамп по java.lang.OutOfMemoryError
если вам не в тягость, посоветуйте чем его можно обработать, для наглядности...

Memory Analyzer (MAT) рулез форева
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
HeapDumpOnOutOfMemoryError
    #37630987
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczLandsknechtBlazkowicz,
добрый день! получил дамп по java.lang.OutOfMemoryError
если вам не в тягость, посоветуйте чем его можно обработать, для наглядности...
VisualVM (JDK/bin/jvisualvm.exe)

а в 1.5 есть что нибудь встроенное для просмотра?
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37630997
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wnoiseа в 1.5 есть что нибудь встроенное для просмотра?
Скачайте JDK 6 и запустите visualvm оттуда. Можно вообще её отдельно скачать.
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37630998
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JConsole
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633064
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот такой вопрос у меня созрел при просмотре Java VisualVM.

Виртуальная память процесса (Xp, 2003 - 32 бита) большая: приближается к 1,3-1,4 Gb. Хочу понять, что же (кто же) это сжирает. Получаю HeapDump - вижу вроде правдоподобные вещи, НО если смотреть size, то он соотносится к общей выжратой памяти процесса как 1 к 10 (5-10%). Как можно посмотреть остальное? Или если gc вдруг соберет всё, что он может собрать, то собственно только эти 5-10% у процесса и останутся?
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633092
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wnoiseВиртуальная память процесса (Xp, 2003 - 32 бита) большая: приближается к 1,3-1,4 Gb. Хочу понять, что же (кто же) это сжирает. Получаю HeapDump - вижу вроде правдоподобные вещи, НО если смотреть size, то он соотносится к общей выжратой памяти процесса как 1 к 10 (5-10%). Как можно посмотреть остальное? Или если gc вдруг соберет всё, что он может собрать, то собственно только эти 5-10% у процесса и останутся?
Попробуйте переформулировать вопрос. А то не очень понятно кто что сожрет и кому не останется.
Перед созданием дампа кучи происходит Full GC.
Куча зачастую занимает большую часть памяти процесса, но кроме неё часть памяти использует сама JVM и ещё perm gen space
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633121
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Смотрите:

есть процесс, у которого в некий момент времени значение виртуальной памяти приближается к 1,3-1,4 Gb (т.е. критичному значению для 32 битных систем - как я понимаю :)). Логично желание посмотреть на какие цели вся эта память выделяется и можно ли с этим что то сделать (точнее говоря какой кэш уменьшить или совсем убрать).

Используются след. параметры:
-Xms128m
-Xmx1300m

Сделал heapdump через vmparam -XX:+HeapDumpOnCtrlBreak путем нажатия ctrl-break.

Открываю в Java VisualVM (jdk1.6; сам дамп делался в 1.5) и вижу что:
Код: java
1.
Total bytes: 16 730 091



при том, что в данном конкретном тестовом случае виртуальная память процесса 250-300 метров. Собственно вопрос - или неправильно отображается или остальные 95% отводятся не на heap, а в другое место и можно ли посмотреть куда именно?
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633156
Miha_S7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wnoise,

зачем вообще дампы делать? В jvisualvm видно и хип и перм, что где сколько.
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633164
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wnoise есть процесс, у которого в некий момент времени значение виртуальной памяти приближается к 1,3-1,4 Gb (т.е. критичному значению для 32 битных систем - как я понимаю :)).
Такое ощущение, что вы прям опасаетесь этого приближения. Не опасайтесь. Мир не рухнет.

wnoiseЛогично желание посмотреть на какие цели вся эта память выделяется и можно ли с этим что то сделать (точнее говоря какой кэш уменьшить или совсем убрать).

Используются след. параметры:
-Xms128m
-Xmx1300m

Открываю в Java VisualVM (jdk1.6; сам дамп делался в 1.5) и вижу что:
Total bytes: 16 730 091

Все лишние объекты были собраны. В куче осталось 16Мб живых объектов. Под виндой JVM не особо отдаёт память обратно в ОС. Если в какой-то момент куча выросла, до 1Gb, то это пространство останется выделеным под кучу. Даже если живым объектам нужно гораздо больше. Логично предположить что Xmx можно было бы и поменьше поставить.

wnoiseпри том, что в данном конкретном тестовом случае виртуальная память процесса 250-300 метров. Собственно вопрос - или неправильно отображается или остальные 95% отводятся не на heap, а в другое место и можно ли посмотреть куда именно?
Под хип место резервируется. Даже если там всего 2Мб живых объектов, JVM может зарезервировать 1Gb под хип и никому не отдавать.
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633207
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

бывало и рушился мир, когда outofmemory кидался - поэтому настороженно отношусь.

Что касается отдачи памяти, то n лет назад помнится ставил тест - потребовалось 4-е вызова gc (на простом тесте), чтобы память вернули.

Соответственно там, где кидается OutOfMemory - надо просто мониторить heap? а можно получение dump программно инициировать?
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633228
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wnoiseбывало и рушился мир, когда outofmemory кидался - поэтому настороженно отношусь.

outofmemory кидается при других обстоятельствах. К приближению в 2Гб лимит 32х-битной ос он никакого отношения не имеет.

wnoiseЧто касается отдачи памяти, то n лет назад помнится ставил тест - потребовалось 4-е вызова gc (на простом тесте), чтобы память вернули.

Мы про память ОС или свободное место в куче? Java 5 под виндой память точно не отдаёт. Никак. Что в последних версиях - не знаю.

wnoiseСоответственно там, где кидается OutOfMemory - надо просто мониторить heap?

Да.

wnoiseа можно получение dump программно инициировать?
Можного его на OutOfMemoryError повесить.
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633264
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Код: java
1.
2.
3.
4.
wnoise
бывало и рушился мир, когда outofmemory кидался - поэтому настороженно отношусь.

outofmemory кидается при других обстоятельствах. К приближению в 2Гб лимит 32х-битной ос он никакого отношения не имеет.



расскажете вкратце?

Код: java
1.
2.
3.
4.
wnoise
Что касается отдачи памяти, то n лет назад помнится ставил тест - потребовалось 4-е вызова gc (на простом тесте), чтобы память вернули.

Мы про память ОС или свободное место в куче? Java 5 под виндой память точно не отдаёт. Никак. Что в последних версиях - не знаю.



про память ОС. не исключено, что дело было с 1.4

Код: java
1.
2.
3.
4.
wnoise
а можно получение dump программно инициировать?

Можного его на OutOfMemoryError повесить.



вроде как выше в теме было сказано, что jvm может не хватить сил в случае outofmemory на генерацию дампа.
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633287
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wnoiseрасскажете вкратце?

Там разные варианты есть.
Во-первых исключение кидается, когда после полной сборки мусора свободного места в хипе осталось меньше определенного порога. Порог можно настроить.
Во-вторых исключение кидается, когда уборка занимает радикально много времени ( то ли по сравнению с остальной работой JVM, то ли в абсолютной величине, не помню точно.) Тоже настраивается.
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html


wnoiseпро память ОС. не исключено, что дело было с 1.4
В 1.4 и ранних версиях под виндой тоже не отдаётся память. Уверен что и в 6 и в 7 та же проблема.

wnoiseвроде как выше в теме было сказано, что jvm может не хватить сил в случае outofmemory на генерацию дампа.
У меня такое было в IBM JVM. Как решение, можно выставить порог выброса OOME побольше.
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633337
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wnoiseвроде как выше в теме было сказано, что jvm может не хватить сил в случае outofmemory на генерацию дампа. У Микрософта в .Net есть прикол на эту тему. Он для того, что бы суметь бросить OutOfMemory заранее создает инстанс исключения в системном домене - как раз для того, что бы суметь бросить его в случае отсутствии места в куче
...
Рейтинг: 0 / 0
HeapDumpOnOutOfMemoryError
    #37633345
wnoise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

хмм. действительно под 1.5 не отдается память в win7. Четко помню, что был такой тест, но правда не помню когда это было:)
С другой стороны виртуальная память для процесса может уменьшаться - я так понимаю это когда jvm стартует выполнение gc сама?

Еще спрашивал: можно ли программно получить heapdump?
...
Рейтинг: 0 / 0
25 сообщений из 59, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / HeapDumpOnOutOfMemoryError
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]