Я все еще изучаю веревки Java, поэтому извините, если есть очевидный ответ на этот вопрос. У меня есть программа, которая берет тонну памяти, и я хочу понять, как уменьшить ее использование, но после прочтения многих вопросов SO у меня есть идея, что мне нужно доказать, где проблема, прежде чем я начну ее оптимизировать.
Итак, вот что я сделал, я добавил точку останова к началу моей программы и запустил ее, после чего начал работу visualVM и профилировал память (я тоже делал то же самое в netbeans только для сравнения результатов, и они одинаковы). Моя проблема заключается в том, что я не знаю, как их читать, я получил самую высокую область, просто говоря char[]
, и я не вижу никакого кода или чего-либо (что имеет смысл, потому что visualvm подключается к jvm и не может видеть мой source, но netbeans также не показывает мне источник, как при выполнении профилирования cpu).
В принципе, я хочу знать, какая переменная (и, надеюсь, более подробная информация о том, какой метод) использует всю память, поэтому я могу сосредоточиться на работе там. Есть ли простой способ сделать это? Я сейчас использую eclipse и java для разработки (и установленных visualVM и netbeans специально для профилирования, но я готов установить что-нибудь еще, что, по вашему мнению, выполняет эту работу).
EDIT: В идеале, я ищу что-то, что возьмет все мои объекты и отсортирует их по размеру (так что я могу видеть, какая из них представляет собой память для hogging). В настоящее время он возвращает общую информацию, такую как string [] или int [], но я хочу знать, к какому объекту относится его ссылка, поэтому я могу работать над тем, чтобы его размер был более оптимизирован.