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

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

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

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

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

34
задан Error_404 11 April 2012 в 15:53
поделиться