|
|
|
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 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseхмм. действительно под 1.5 не отдается память в win7. Четко помню, что был такой тест, но правда не помню когда это было:) Не важно. Вы могли, например, обратить внимание только на RAM, без учета виртуальной памятию wnoiseС другой стороны виртуальная память для процесса может уменьшаться - я так понимаю это когда jvm стартует выполнение gc сама? Виртуальная память уменьшается, когда данные из неё переносятся в физическую. Или что у вас вообще под виртуальной подразумевается? wnoiseЕще спрашивал: можно ли программно получить heapdump? Гугл говорит, что можно. Вопрос - зачем? http://code.google.com/p/perfbench/source/browse/trunk/perfbench/jmeter-utils/src/main/java/jmeterutils/JmxHeapDumper.java http://blogs.oracle.com/sundararajan/entry/programmatically_dumping_heap_from_java http://www.java-community.de/archives/85-Java-heap-dumps.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 16:58:06 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowiczwnoiseхмм. действительно под 1.5 не отдается память в win7. Четко помню, что был такой тест, но правда не помню когда это было:) Не важно. Вы могли, например, обратить внимание только на RAM, без учета виртуальной памятию wnoiseС другой стороны виртуальная память для процесса может уменьшаться - я так понимаю это когда jvm стартует выполнение gc сама? Виртуальная память уменьшается, когда данные из неё переносятся в физическую. Или что у вас вообще под виртуальной подразумевается? wnoiseЕще спрашивал: можно ли программно получить heapdump? Гугл говорит, что можно. Вопрос - зачем? http://code.google.com/p/perfbench/source/browse/trunk/perfbench/jmeter-utils/src/main/java/jmeterutils/JmxHeapDumper.java http://blogs.oracle.com/sundararajan/entry/programmatically_dumping_heap_from_java http://www.java-community.de/archives/85-Java-heap-dumps.html я про столбец "объем виртуальной памяти" в диспетчере задач в винде (xp,2003) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:02:50 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
а еще где хранятся int, long и прочие простые типы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:05:03 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. Зачем - чтобы у клиентов не тусить постоянно и их не просить делать какие то действия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:10:19 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseя про столбец "объем виртуальной памяти" в диспетчере задач в винде (xp,2003) Подозреваю что это тот, который сброшен на жесткий диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:17:27 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseа еще где хранятся int, long и прочие простые типы? Если это локальные переменные, то на стэке. Если это поля объектов, то соответственно в куче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:19:02 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseЗачем - чтобы у клиентов не тусить постоянно и их не просить делать какие то действия. Ну, существуют внятные средства мониторинга. Зачем обязательно хип дампить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:19:50 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
BlazkowiczwnoiseЗачем - чтобы у клиентов не тусить постоянно и их не просить делать какие то действия. Ну, существуют внятные средства мониторинга. Зачем обязательно хип дампить? раз уж поставили знак вопроса в конце :) - а что имеется в виду под внятными средствами мониторинга? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:27:19 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowiczwnoiseрасскажете вкратце? Там разные варианты есть. Во-первых исключение кидается, когда после полной сборки мусора свободного места в хипе осталось меньше определенного порога. Порог можно настроить. Во-вторых исключение кидается, когда уборка занимает радикально много времени ( то ли по сравнению с остальной работой JVM, то ли в абсолютной величине, не помню точно.) Тоже настраивается. http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html ну если java.lang.OutOfMemoryError: Java heap space - это ведь собственно оно - нехватка места в куче? Другими словами приближение (или попытка превышения) к параметру Xmx. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:40:32 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseну если java.lang.OutOfMemoryError: Java heap space - это ведь собственно оно - нехватка места в куче? Другими словами приближение (или попытка превышения) к параметру Xmx. Разговор начинался с приближения к 2Gb лимита ОС. Это совсем не то же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:43:44 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Спасибо большое. Приятно поговорить с умным человеком :) Если бы еще вот про внятные средства мониторинга просветили ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 17:57:45 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseЕсли бы еще вот про внятные средства мониторинга просветили ;) Ну, если можно у клиента сокет открыть на JMX. То туда можно самому конектится и всё смотреть. Вариантов масса. Просто надо искать что именно подходит под ваши процессы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 18:00:34 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, сеть клиента с приложением под страхом смерти недоступна снаружи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 18:16:43 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseсеть клиента с приложением под страхом смерти недоступна снаружи. Так а зачем вам дамп снимать программно? -verbose:gc + GC log настраиваете. Этого хватает чтобы анализировать расход памяти. добавляете DumpHeapOnOutOfMemoryError и всё. Что именно вы хотите мониторить, если доступа к сети нет? Мониторить как бы подразумевает постоянную связь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2012, 18:21:50 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Я конечно извиняюсь за глупый вопрос :). А если я задал например параметр Xmx=1300, то какие параметры по памяти в диспетчере задач нужно мониторить, чтобы сделать вывод о приближении к опасной черте :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 10:33:45 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseЯ конечно извиняюсь за глупый вопрос :). А если я задал например параметр Xmx=1300, то какие параметры по памяти в диспетчере задач нужно мониторить, чтобы сделать вывод о приближении к опасной черте :)Никак, для этого надо профайлерами пользоваться, а не диспетчером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 10:55:42 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
svenomwnoiseЯ конечно извиняюсь за глупый вопрос :). А если я задал например параметр Xmx=1300, то какие параметры по памяти в диспетчере задач нужно мониторить, чтобы сделать вывод о приближении к опасной черте :)Никак, для этого надо профайлерами пользоваться, а не диспетчером. Это провал :). Система у заказчика и его It хочет мониторить самостоятельно память, чтобы принимать определенные меры. Профайлером он пользоваться не будет :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 11:03:20 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseЭто провал :). Система у заказчика и его It хочет мониторить самостоятельно память, чтобы принимать определенные меры. Профайлером он пользоваться не будет :(Ну значит надо объяснить ему, что память в виртуальных машинах (не важно - JVM или .Net) нельзя мониторить через диспетчер, так как ее структура достаточно сложная и по циферке из Task Manager никаких "определенных мер" предпринять нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 11:31:16 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoise Это провал :). Система у заказчика и его It хочет мониторить самостоятельно память, чтобы принимать определенные меры. Профайлером он пользоваться не будет :( Что именно он хочет мониторить? Куча может бы заполнена и приложение при этом будет нормально работать. Напишите ему простейший монитор на базе GarbageCollectorMXBean и MemoryMXBean. И пусть мониторит, хоть до посинения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 12:20:48 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseПрофайлером он пользоваться не будет :( Это умным словом managementability называется. Когда приложение поддерживается админами, но для них разрабатывается специальный интерфейс мониторинга и инструкции, что делать в случае проблем. Научится пользоваться профайлером - проще. На jeeconf был отличный доклад по поводу GC в JVM: http://jeeconf.com/archive/jeeconf-2011/materials/garbage-collector/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 12:28:39 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Спасибо. Blazkowiczwnoise Это провал :). Система у заказчика и его It хочет мониторить самостоятельно память, чтобы принимать определенные меры. Профайлером он пользоваться не будет :( Что именно он хочет мониторить? Куча может бы заполнена и приложение при этом будет нормально работать. Напишите ему простейший монитор на базе GarbageCollectorMXBean и MemoryMXBean. И пусть мониторит, хоть до посинения. а поясните плиз: выше шла речь о том, что jvm очень неохотно освобождает память. Соответственно если взять Код: java 1. , то он тоже неохотно освобождается пока не попросишь под другие задачи или явно не вызовешь: Код: java 1. Соответственно вопрос - так и должно быть? или надо дольше ждать пока не почистится? (смотрел на jvm 1.5) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 15:54:46 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoisejvm очень неохотно освобождает память. JVM под виндой не освобождает память вообще. Если речь про кучу, то здесь трудно сказать. Может приложению так и нужно. Большая куча живых объектов и маленький Eden. wnoiseСоответственно вопрос - так и должно быть? или надо дольше ждать пока не почистится? (смотрел на jvm 1.5) Что должно быть? Должно быть так чтобы ваше приложение не тормозило. Если ваше приложение тормозит, потому что GC, тогда надо разбираться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2012, 16:26:06 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz http://habrahabr.ru/blogs/java/137641/ Спасибо. Вопрос все таки немного в другом. Приложение не тормозит, потому что GC. Есть задача - в рамках приложения реализовать минимальный мониторинг - приближение/удаление от опасной черты, заданной параметром xmx. Использую ManagementFactory.getMemoryMXBean().getUsed(); С точки зрения приближения - работает - первая часть задачи решена. Беремся за вторую - удаление от этой опасной черты. Соответственно данные уже не нужны и память никто не требует. В этом случае строчки вроде(при включенном -verbose:gc): [Full GC 16231K->16197K(33408K), 0.0399266 secs] не появляются (что логично). А полная сборка мусора происходит только при вызове ManagementFactory.getMemoryMXBean().gc(); Соответственно если приложение затребовало большой объем памяти, освободило (например метод закончился, внутри которого локально выделялась память) и после этого никаких задач не выполняет (и соответственно памяти не просит), то ManagementFactory.getMemoryMXBean().getUsed(); будет всегда возвращать пиковое значение и скинуть его можно только вызовом: ManagementFactory.getMemoryMXBean().gc(); так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2012, 13:13:20 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseтак? В Hotspot несколько разных сборщиков с разным поведением. Вот так сразу компактно ответить на ваш вопрос нельзя. Всё сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2012, 13:15:26 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Опять подниму. А мне кажется или в 1.7 не поддерживается параметр -XX:+HeapDumpOnCtrlBreak ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2013, 15:33:22 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseОпять подниму. А мне кажется или в 1.7 не поддерживается параметр -XX:+HeapDumpOnCtrlBreak ? Нет, не кажется. Да, не поддерживает. Почему-то убрали. Не помню почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2013, 15:35:10 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
и как теперь с клиентов получать dump ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2013, 15:41:49 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
jvisualvm ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2013, 15:42:09 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoiseи как теперь с клиентов получать dump ? С каких ещё "клиентов"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2013, 15:44:31 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
wnoisejvisualvm ? Да, как вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2013, 15:44:41 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Объяснение, что зачем и почему: http://bugs.sun.com/view_bug.do?bug_id=6454676 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2013, 15:45:46 |
|
||
|
HeapDumpOnOutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Blazkowiczwnoiseи как теперь с клиентов получать dump ? С каких ещё "клиентов"? с заказчиков. раньше сказал сделай ctrl-break и пришли файл. а тут конечно так не со всеми получится :(. Что же делать то.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2013, 15:49:22 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2129726]: |
0ms |
get settings: |
15ms |
get forum list: |
16ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
68ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 330ms |
| total: | 530ms |

| 0 / 0 |
