Объекты с "без ссылок" в hprof - PullRequest
       15

Объекты с "без ссылок" в hprof

5 голосов
/ 05 сентября 2011

Я исследую файл hprof в VisualVM

Сервер работает под управлением JDK 1.4.2_30 и имеет кучу 1 ГБ с NewSize 200 МБ.

hprof показывает 71% кучи, занятой 56000 экземплярами int[], и ни один из этих массивов 56K не имеет ссылок при просмотре в VisualVM

По нашему мнению, это должен был быть мусор, если не было "никаких ссылок". Итак, вопросы:

а) есть ли способ узнать эти ссылки?

b) Это неправильный снимок - то есть, выполнял ли какой-нибудь GC-действие какое-либо действие?

в) Должны ли мы смотреть на объекты «сохраняемых размеров» в VisualVM?

В качестве обновления - мы до сих пор не знаем, что это за int[], но следующими по величине объектами были внутренние ссылки EJB Weblogic в Пуле, и мы обнаружили неправильную настройку в одном из тех, которые привели к использование памяти меньше на 30% по сравнению с ранее частыми полными GC

1 Ответ

2 голосов
/ 05 сентября 2011

Отказ от ответственности: Угадайте, у меня нет четкого ответа, но я мог бы дать несколько полезных советов.

В последнее время я видел похожую ситуацию (хотя и с гораздо более актуальной версией Java).

Причиной большого количества не связанных int[] кажется, что были сопоставлены какие-то буферы (я не эксперт NIO, но, похоже, это связано с этим).

Причина такого вывода заключается в том, что было очень похоже число byte[] вокруг с почти одинаковым размером в памяти, и на эти byte[] ссылались некоторые *Channel экземпляры.

Так что я предполагаю (было), что эти int[] на самом деле синтетические экземпляры, которые на самом деле делятся своей памятью с byte[] (на которые * правильно ссылаются). Короче говоря: это красные сельди.

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

...