Из-за вопроса Creating a memory leak with Java существует множество способов создания утечек памяти в Java, но я просто пытаюсь создать простую утечку памяти и как-то наблюдать ее эффект. На самом деле, пытаясь создать утечку памяти, я хотел бы проверить, что (в цифрах или что-то еще), чтобы я убедился, что утечка памяти была успешно создана. Можем ли мы исследовать возникновение утечки памяти в нашем коде, не используя стороннее приложение, просто вставив, например, runtime.maxMemory() в нашем коде?Как проверить утечку памяти в Java
ответ
Это заменитель бедного-человек для инструмента профилирования памяти:
public static long bytesOccupied() {
final Runtime rt = Runtime.getRuntime();
for (int i = 0; i < 2; i++) rt.gc();
return rt.totalMemory()-rt.freeMemory();
}
Я использовал это несколько раз и могу подтвердить, что это работает, по крайней мере на некоторые установки. Попробуйте и посмотрите, дает ли он вам разумные результаты.
В противном случае очень легко запустить VisualVM, который уже установлен на вашем компьютере с помощью JDK. Обязательно установите дополнительный плагин VisualGC. Сделайте свой код, сделав некоторые выделения в цикле, и наблюдайте, как происходит генерация генераций GC. Используйте короткое время выборки (100 или 200 мс), чтобы получить ощущение в реальном времени.
Итак, ключом к созданию утечки памяти был вызов rt.gc() дважды? Можете ли вы объяснить, как работает ваш код - Спасибо (Потому что, если я не добавил это (\t \t символ [] ч = новый символ [100000000]; \t \t \t \t Строка й = новый String (ч);) до вызова кода Я не мог сгенерировать утечку памяти. –
Код в моем ответе не претендует на создание утечки памяти, это метод * измерения и обнаружения * утечки памяти. Вам понадобится тот же код, независимо от того, какой метод создайте утечку памяти, которую вы хотите протестировать. –
Итак, почему там размещен rt.gc()? –
- 1. Как проверить на утечку памяти
- 2. Как найти утечку памяти Java
- 3. Как найти утечку памяти Java
- 4. Как проверить, какие строки Java хранятся вокруг, вызывая утечку памяти?
- 5. Как уменьшить утечку памяти в java?
- 6. как исправить утечку памяти?
- 7. С уважением, как проверить утечку памяти в моем веб-приложении?
- 8. Как создать утечку памяти?
- 9. Tomcat 8 утечку памяти
- 10. Как предотвратить утечку памяти
- 11. Как остановить утечку памяти?
- 12. Как исправить утечку памяти?
- 13. Как заблокировать утечку памяти?
- 14. Как проверить утечку памяти из журнала сообщений в Logcat?
- 15. Entitymanager вызывает утечку памяти?
- 16. СвойствоChangedEventHandler вызывает утечку памяти
- 17. Как решить утечку памяти в GWT?
- 18. glTexImage2D вызывает утечку памяти
- 19. Почему эта программа Java вызывает утечку памяти?
- 20. Tomcat8 утечку памяти
- 21. Как найти утечку памяти в javac-задаче
- 22. Как исправить эту утечку памяти?
- 23. Как отслеживать утечку памяти COM
- 24. Как исправить эту утечку памяти
- 25. Как остановить серьезную утечку памяти
- 26. Как решить эту утечку памяти?
- 27. Как обнаружить утечку памяти/утечку аккумулятора в приложении для iPhone
- 28. Как отладить потенциальную утечку памяти?
- 29. Как исправить утечку памяти apple80211GetInfoCopy()?
- 30. Как остановить утечку памяти AVQueuePlayer?
Для вас рассматривается [VisualVM] (http://visualvm.java.net/), который является частью JDK (с 6, если я не ошибаюсь) в качестве стороннего инструмента/приложения? –