Я использовал jprofiler для обнаружения утечки памяти для моего кода клиента. Начав использовать память, используемую java.util.hashmap, число $ резко увеличилось до 1700 КБ. после этого он тоже уменьшился. В окне дампа кучи java.lang.ref.finalizer использовалось максимальное количество памяти. Что он делает? Когда я пытаюсь найти finalize() в моем исходном коде, его там не было. в файле HTML finalize() использовался как этот. finalize, что это значит? Причина finalize() или ссылка hashmap $ entry вызывает утечку?Утечка памяти в java
ответ
Если вы хотите найти утечку памяти, вы должны посмотреть, сколько памяти используется после полного GC, дважды, если у вас есть много окончательных ссылок, иначе вы, вероятно, увидите много временных объектов, .
Я подозреваю, что ни один из типов данных, которые вы видите, является проблемой esp, если они периодически используются. Ищите потребление, которое только повышается.
Спасибо, Питер. На самом деле почти все данные о потребляемой памяти памяти данных возрастают. Я хочу сказать, что если потребление составляет 50 кб через 10 минут, то это 56 кбайт, и сразу после выполнения gc потребление составляет 53 КБ, а через 10 мин. 3 кб памяти увеличивается и периодически увеличивается только таким образом. Подтверждает ли оно, что у моего приложения есть утечка памяти? –
Увеличение количества МБ после полного GC может стать утечкой. Я бы не стал беспокоиться о нескольких килобайтах, поскольку это может быть «шум». Если все увеличивается, это указывает на общий фактор, например. которая содержит все эти возрастающие классы. –
Большое спасибо Петру. –
Что это значит?
Во-первых, ваше так называемое «доказательство» искажено, и неясно, какова должна быть версия без искажений. Однако, основываясь на некоторых догадках ... Я не вижу явных признаков утечки памяти вообще.
Скорее, это выглядит то, что случилось бы, если бы у вас была большая WeakHashMap
что либо стал недостижим, или что получил убрались, потому что GC заметил, что куча становится слишком полной.
Однако моя догадка может быть неправильно, и может быть утечка здесь ...
Причина завершения() или ссылка HashMap $ запись вызывает утечку?
Не обязательно либо. (На самом деле, если действительно есть утечка хранения вообще, это вряд что-либо из тех, кто является прямой причиной.)
Спасибо Стивен. На самом деле почти все данные о потребляемой памяти памяти данных возрастают. Я хочу сказать, что если потребление составляет 50 кб через 10 минут, то это 56 кбайт, и сразу после выполнения gc потребление составляет 53 КБ, а через 10 мин. 3 кб памяти увеличивается и периодически увеличивается только таким образом. Подтверждает ли оно, что у моего приложения есть утечка памяти? –
Единая точка данных не является свидетельством утечки памяти. Согласованная долгосрочная тенденция будет свидетельством утечки. –
- 1. Утечка памяти в java
- 2. Утечка памяти в Java?
- 3. java imageio утечка памяти
- 4. Кодировка: утечка памяти Java
- 5. Темы Java: утечка памяти
- 6. Исключительная утечка памяти Java
- 7. Утечка памяти в приложении Java
- 8. Утечка памяти в Java (Википедия)
- 9. Утечка памяти в java ImageIO.read()
- 10. char Утечка памяти в Java
- 11. Утечка памяти Java (Loop Traversing)
- 12. Утечка памяти Tomcat и java
- 13. Утечка памяти Java или нет?
- 14. Реализация Java Java SSL - это утечка памяти?
- 15. Утечка памяти в приложении на основе Java
- 16. Возможный утечка памяти в Java ArrayList Iterator
- 17. Утечка памяти Java OutOfMemoryError в Vector Список
- 18. Утечка памяти (?) При отображении изображений в java
- 19. Java/Groovy - утечка памяти в GroovyClassLoader
- 20. Утечка памяти в JDBC4Connection
- 21. Утечка памяти Bitmap памяти
- 22. утечка памяти python, утечка кадров
- 23. Утечка памяти с JAXB
- 24. Утечка памяти в WebObjects
- 25. Утечка памяти в jdk1.7.0
- 26. Утечка памяти в WPF
- 27. Утечка памяти в SDL_Open
- 28. Утечка памяти в NodeJS
- 29. Утечка памяти в Scrapy
- 30. Утечка памяти в CGImage
Там нет такого понятия, как 'java.lang.ref.finalizer' или 'java.util.HashMap $ entry'. Пожалуйста, обновите вопрос с именами или именами REAL-класса или тем, что они есть. –
Почему вы думаете, что есть утечка памяти? Получает ли ваше приложение «OutOfMemoryException»? Возможно, вам просто нужно изменить объем памяти, с которой вы запускаете приложение. – radimpe