|
|
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Добрый день, подскажите, как в можно получить дамп памяти..по событию OutOfMemory приложение на tomcate зависает со следующими симптомами Код: plaintext 1. 2. пробовал использовать параметр -XX:+HeapDumpOnOutOfMemoryError но при зависании файл дампа не создался. система со следующей конфигурацией Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 16:42:53 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Stop-the-world GC это ещё не OutOfMemoryError. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 16:49:36 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
спасибо за участие! BlazkowiczStop-the-world GC это ещё не OutOfMemoryError. бываеет и такое Код: plaintext 1. но в основном сейчас вижу такого типа ошибки Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. на что бы обратить внимание...для определения причин утечки памяти, очень хочется получить дамп( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 17:15:43 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Вот когда такое бывает java.lang.OutOfMemoryError: Java heap space тогда и должен сгенерится дамп. Но вообще это не всегда работает, потому как JVM может не хватить памяти на то чтобы сгенерить дамп. Лучше мониторить хип, а потом снять дамп по запросу. -XX:+HeapDumpOnCtrlBreak выставить, а потом как куча забита kill -3 PID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2010, 17:43:34 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, большое спасибо! ели для вас не будет трудом, скажите, что может быть причиной возникновения Код: plaintext и не сочтите за наглость Код: plaintext 1. т.е. при этом параметре HeapDumpOnCtrlBreak будут видны процессы, которые при их возникновении можно будет убивать системной утилитой kill? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2010, 09:24:57 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
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. Первый консольный, второй - гуёвый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2010, 10:44:18 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а в этом случаи может возыметь действие по оптимизации работы GC, включение различных параметров к примеру -XX:+UseParallelGC и подобных? спасибо большое за развернутый ответ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2010, 12:40:28 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Landsknecht а в этом случаи может возыметь действие по оптимизации работы GC, включение различных параметров к примеру -XX:+UseParallelGC и подобных? Оптимизация GC это коплексный процесс. Простое включение параметров не поможет. Нужно понимать что делает каждый ключ. Как это отразится на системе. И как нужно поменять значение именно под вашу систему. Обычно с этим заморчиваются только для высоконагруженых систем. В других случаях вполне достаточно оптимизировать код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2010, 12:44:13 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, добрый день! получил дамп по java.lang.OutOfMemoryError если вам не в тягость, посоветуйте чем его можно обработать, для наглядности... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2010, 16:39:32 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
LandsknechtBlazkowicz, добрый день! получил дамп по java.lang.OutOfMemoryError если вам не в тягость, посоветуйте чем его можно обработать, для наглядности... VisualVM (JDK/bin/jvisualvm.exe) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2010, 16:41:00 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
LandsknechtBlazkowicz, добрый день! получил дамп по java.lang.OutOfMemoryError если вам не в тягость, посоветуйте чем его можно обработать, для наглядности... Memory Analyzer (MAT) рулез форева ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2010, 18:42:26 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
BlazkowiczLandsknechtBlazkowicz, добрый день! получил дамп по java.lang.OutOfMemoryError если вам не в тягость, посоветуйте чем его можно обработать, для наглядности... VisualVM (JDK/bin/jvisualvm.exe) а в 1.5 есть что нибудь встроенное для просмотра? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2012, 15:33:32 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseа в 1.5 есть что нибудь встроенное для просмотра? Скачайте JDK 6 и запустите visualvm оттуда. Можно вообще её отдельно скачать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2012, 15:37:03 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
JConsole ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2012, 15:37:15 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
А вот такой вопрос у меня созрел при просмотре Java VisualVM. Виртуальная память процесса (Xp, 2003 - 32 бита) большая: приближается к 1,3-1,4 Gb. Хочу понять, что же (кто же) это сжирает. Получаю HeapDump - вижу вроде правдоподобные вещи, НО если смотреть size, то он соотносится к общей выжратой памяти процесса как 1 к 10 (5-10%). Как можно посмотреть остальное? Или если gc вдруг соберет всё, что он может собрать, то собственно только эти 5-10% у процесса и останутся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 15:13:27 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseВиртуальная память процесса (Xp, 2003 - 32 бита) большая: приближается к 1,3-1,4 Gb. Хочу понять, что же (кто же) это сжирает. Получаю HeapDump - вижу вроде правдоподобные вещи, НО если смотреть size, то он соотносится к общей выжратой памяти процесса как 1 к 10 (5-10%). Как можно посмотреть остальное? Или если gc вдруг соберет всё, что он может собрать, то собственно только эти 5-10% у процесса и останутся? Попробуйте переформулировать вопрос. А то не очень понятно кто что сожрет и кому не останется. Перед созданием дампа кучи происходит Full GC. Куча зачастую занимает большую часть памяти процесса, но кроме неё часть памяти использует сама JVM и ещё perm gen space ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 15:20:47 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Смотрите: есть процесс, у которого в некий момент времени значение виртуальной памяти приближается к 1,3-1,4 Gb (т.е. критичному значению для 32 битных систем - как я понимаю :)). Логично желание посмотреть на какие цели вся эта память выделяется и можно ли с этим что то сделать (точнее говоря какой кэш уменьшить или совсем убрать). Используются след. параметры: -Xms128m -Xmx1300m Сделал heapdump через vmparam -XX:+HeapDumpOnCtrlBreak путем нажатия ctrl-break. Открываю в Java VisualVM (jdk1.6; сам дамп делался в 1.5) и вижу что: Код: java 1. при том, что в данном конкретном тестовом случае виртуальная память процесса 250-300 метров. Собственно вопрос - или неправильно отображается или остальные 95% отводятся не на heap, а в другое место и можно ли посмотреть куда именно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 15:29:08 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoise, зачем вообще дампы делать? В jvisualvm видно и хип и перм, что где сколько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 15:38:01 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
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 под хип и никому не отдавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 15:39:24 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, бывало и рушился мир, когда outofmemory кидался - поэтому настороженно отношусь. Что касается отдачи памяти, то n лет назад помнится ставил тест - потребовалось 4-е вызова gc (на простом тесте), чтобы память вернули. Соответственно там, где кидается OutOfMemory - надо просто мониторить heap? а можно получение dump программно инициировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 15:53:00 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseбывало и рушился мир, когда outofmemory кидался - поэтому настороженно отношусь. outofmemory кидается при других обстоятельствах. К приближению в 2Гб лимит 32х-битной ос он никакого отношения не имеет. wnoiseЧто касается отдачи памяти, то n лет назад помнится ставил тест - потребовалось 4-е вызова gc (на простом тесте), чтобы память вернули. Мы про память ОС или свободное место в куче? Java 5 под виндой память точно не отдаёт. Никак. Что в последних версиях - не знаю. wnoiseСоответственно там, где кидается OutOfMemory - надо просто мониторить heap? Да. wnoiseа можно получение dump программно инициировать? Можного его на OutOfMemoryError повесить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 16:00:06 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Код: java 1. 2. 3. 4. расскажете вкратце? Код: java 1. 2. 3. 4. про память ОС. не исключено, что дело было с 1.4 Код: java 1. 2. 3. 4. вроде как выше в теме было сказано, что jvm может не хватить сил в случае outofmemory на генерацию дампа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 16:12:29 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
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 побольше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 16:19:32 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseвроде как выше в теме было сказано, что jvm может не хватить сил в случае outofmemory на генерацию дампа. У Микрософта в .Net есть прикол на эту тему. Он для того, что бы суметь бросить OutOfMemory заранее создает инстанс исключения в системном домене - как раз для того, что бы суметь бросить его в случае отсутствии места в куче ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 16:39:10 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, хмм. действительно под 1.5 не отдается память в win7. Четко помню, что был такой тест, но правда не помню когда это было:) С другой стороны виртуальная память для процесса может уменьшаться - я так понимаю это когда jvm стартует выполнение gc сама? Еще спрашивал: можно ли программно получить heapdump? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 16:41:11 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=36863058&tid=2129726]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
23ms |
get forum data: |
5ms |
get page messages: |
116ms |
get tp. blocked users: |
3ms |
| others: | 299ms |
| total: | 536ms |

| 0 / 0 |
