Как сохранить профиль памяти в Java?

Я все еще изучаю веревки Java, так что извините, если есть очевидный ответ на этот вопрос. У меня есть программа, которая занимает тонну памяти, и я хочу найти способ уменьшить ее использование, но после прочтения многих SO вопросов у меня возникает мысль, что мне нужно доказать, в чем проблема, прежде чем я начну ее оптимизировать.

Итак, вот что я сделал, я добавил точку останова в начало моей программы и запустил ее, затем я запустил visualVM и настроил ее профиль памяти (я также делал то же самое в netbeans, просто для сравнения результатов, и они тот же самый). Моя проблема в том, что я не знаю, как их читать, я получил высшую область, просто говоряchar[] и я не вижу никакого кода или чего-либо еще (что имеет смысл, потому что visualvm подключается к jvm и не может видеть мой источник, но netbeans также не показывает мне источник, как при профилировании процессора).

По сути, я хочу знать, какая переменная (и, как мы надеемся, более подробная информация, например, в каком методе) используется вся память, поэтому я могу сосредоточиться на работе там. Есть ли простой способ сделать это? Я сейчас использую eclipse и java для разработки (и установил visualVM и netbeans специально для профилирования, но готов установить все, что, по вашему мнению, выполнит эту работу).

РЕДАКТИРОВАТЬ: В идеале, я ищу что-то, что будет брать все мои объекты и сортировать их по размеру (чтобы я мог видеть, какой из них утомляет память). В настоящее время он возвращает общую информацию, такую как string [] или int [], но я хочу знать, на какой объект он ссылается, чтобы я мог работать над тем, чтобы оптимизировать его размер.

Ответы на вопрос(4)

Ваш ответ на вопрос