Я бег приложения, которое имеет 4 гигабайтов maxmimum размера кучи -Xms4096m -Xmx4096m -Xmn1024m
с GC, настроенных как -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=50
и GC интервал Dsun.rmi.dgc.server.gcInterval=43200000 -Dsun.rmi.dgc.client.gcInterval=43200000
Heap Dump Analysis - Найти первопричину OutOfMemory Exception
Внезапно мое приложение пошло валить из памяти исключение, и я взял резьбовые отвалы и свалки кучи в тот же самый момент. При анализе дампов потоков потоки застревают из-за создания некоторого значения для hashMap и arrayList. ByteArrayOutStream создал блокировки в одном из потоков.
При анализе дампа кучи в инструменте анализатора памяти eclipse он ясно говорит, что объект bytearray занял почти 1 гиг кучи. Из GCViewer он показывает, что он имеет пик доли секунды. Я понимаю, почему вдруг объект массива Byte использовал 1 Gigs of space. Может кто-нибудь помочь мне сузить виновника.
- Application Server - Weblogic 12с
Трудно сказать что-либо с предоставленной информацией. Можете ли вы показать более подробную информацию о вашем коде памяти потребления? – Minh
Просто знание байтового массива вам не поможет. Вам нужно будет посмотреть, какой из объектов вашего приложения использует массив, чтобы иметь представление о том, что пошло не так. MAT позволяет вам перемещать иерархию к содержащемуся объекту. –
Дополнительная информация о кодах была бы полезна, при запуске приложения по умолчанию с предоставленными флагами jvm ничего не реплицирует для меня –