Как рассчитывается «размер» в дампе кучи JVisualVM - PullRequest
0 голосов
/ 06 февраля 2019

Я использую Java Visual VM для анализа производительности в приложении Mule, чтобы уменьшить объем используемой памяти.Когда я смотрю на дамп кучи, я вижу, что char [] имеет размер более 37 МБ, а String имеет размер чуть более 28 МБ.

Что мне не ясно, так это как размерстолбец учитывает объем используемой памяти.В частности, поскольку String является абстракцией char [], мне интересно, означает ли это, что некоторые из этих 37 МБ массивов символов также присутствуют в пределах 28 МБ строк или они выделены отдельно.

Кроме того, у меня также есть класс, который, как я подозреваю, занимает много памяти и содержит несколько строк, но, согласно моему дампу кучи, этот класс использует только 6,5% от общей памяти в куче.

Поэтому я предполагаю, что мой вопрос заключается в следующем: если бы я сделал свой пользовательский класс более эффективным, используя меньше объектов String, я бы увидел уменьшение объема памяти, о котором сообщалось, что он будет использоваться Strings and Char [] или просто для этого конкретного класса?

Спасибо!

1 Ответ

0 голосов
/ 09 февраля 2019

Комментарий Хольгера - это все, что мне нужно ...

"Размеры включают в себя только память для самого объекта, а не для любого объекта, на который есть ссылка (а массивы являются объектами)."

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

...