JProfiler: поиск имени ссылки на утечку памяти

Я пытаюсь использовать JProfiler для одного из моих приложений, которое работает на сервере tomcat.

Итак, я написал сервлет для устранения утечки памяти, как показано ниже.

@SuppressWarnings(value = { "" })
public class Dust extends HttpServlet {
protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    String str = new String();
    List myarrylist = new ArrayList();
    int i = 10;
        while (true) {
    myarrylist.add(str);
    System.out.println(i);
        i++;
    }
}
}

Теперь, когда я запустил JProfiler в этом приложении, используя веб-приложение Profile, работающее локально. Это дало мне этот взгляд. пожалуйста, посмотрите скриншот здесь

http://tinypic.com/view.php?pic=2r5c2nq&s=7

У меня есть эти вопросы:

  1. Он показывает, что количество объектов String создается. (Но как мы можем узнать, в каком классе/сервлете и какая именно строка фактически отвечает за это создание объектов, поскольку у нас может быть много строк в приложении.) ??

  2. И почему кнопка «Пуск» (которую я выделил) отключена??

  3. Достаточно ли запустить JProfiler, нажав кнопку запуска (пожалуйста, посмотрите на это изображение), и разве нам не нужно также запускать сервер Tomcat?

Пожалуйста помоги . Спасибо .


person Community    schedule 22.10.2011    source источник
comment
Может ли кто-нибудь помочь мне.   -  person    schedule 23.10.2011


Ответы (1)


Вы должны использовать heap walker для этого. Представления динамической памяти не могут отображать информацию о ссылках, поскольку необходимо создать моментальный снимок.

См. эту демонстрацию экрана для получения дополнительной информации о том, как найти утечку памяти с помощью JProfiler.

person Ingo Kegel    schedule 23.10.2011
comment
Большое спасибо за ссылку. Это было полезно. - person ; 23.10.2011