Java: выяснить, что использует всю память - PullRequest
3 голосов
/ 09 ноября 2009

У меня есть Java-приложение, которому не хватает памяти, но я понятия не имею, какой код выделяет память. Есть ли приложение, с помощью которого я могу это проверить? Я использую Eclipse.

Ответы [ 10 ]

9 голосов
/ 09 ноября 2009

Поскольку вы используете eclipse, я бы порекомендовал плагин Eclipse Memory Analyzer . Этот инструмент отлично работает и даже предоставит отчет с некоторыми вероятными утечками. Я посмотрел более 1Г кучу свалок с этим без проблем. Я просто использую jconsole, включенный в JDK, чтобы получить дамп.

Также здесь есть отличный блог об использовании инструмента, одного из авторов инструмента.

Это также бесплатно.

5 голосов
/ 09 ноября 2009

VisualVM - это визуальный инструмент, объединяющий несколько инструментов командной строки JDK и легкие возможности профилирования. Разработанный для использования как во время производства, так и в процессе разработки, он дополнительно расширяет возможности мониторинга и анализа производительности для платформы Java SE.

И это входит в JDK.

4 голосов
/ 09 ноября 2009
3 голосов
/ 09 ноября 2009

Вы хотите Профилировщик.

Вот полный список.

2 голосов
/ 09 ноября 2009

Я уверен, что у всех есть свои любимые, но я рекомендую Netbeans .

2 голосов
/ 09 ноября 2009

Вам необходимо использовать профилировщик памяти. Вы можете использовать интерфейс инструмента Sun JVM или сторонний профилировщик, например JProfiler . Eclipse также имеет инструменты профилирования, которые называются Платформа инструментов для тестирования и производительности (TPTP).

1 голос
/ 09 ноября 2009

Для быстрого профилирования или если вы не используете Eclipse или более старые версии jvm, hprof - достойная альтернатива. (Я просто добавляю это как ссылку.).

1 голос
/ 09 ноября 2009

Yourkit - отличный инструмент, который я использовал во многих случаях для поиска и документирования проблем с производительностью. Для этого также можно использовать Eclipse с платформой TPTP. Он также хорошо работает с удаленными серверами приложений (необходимо включить агенты профилирования и включить удаленную отладку в JVM), но он позволяет запускать профилирование практически в любой среде J2EE.

0 голосов
/ 10 ноября 2009

Я обнаружил утечки памяти, используя HP Diagnostics Profiler бесплатная оценка (неограниченно для 5 потоков). Это позволяет легко и наглядно отслеживать распределение памяти и выполнять анализ кучи.

0 голосов
/ 09 ноября 2009

Мне нужно было найти источник утечки памяти, которая вызвала дамп кучи 2.6G на днях. Jhat потребовался невероятный размер кучи 20G, чтобы перебрать его без сбоев. Анализатор памяти Eclipse сделал это под 10G. Тем не менее, я нашел оба инструмента полезными, но сначала рекомендую анализатор памяти для более эффективного использования памяти и простоты использования.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...