Как найти локальные переменные в файле кучи

У меня есть приложение j2ee и мониторинг его visualVM.

скажем, что у меня есть такой метод:

public void doStuff(int param) {
    String s = getStringVariable(param);
    StringBuilder sb = new StringBuilder();
    //Do stuff with sb object
}

из крана потока я вижу, что некоторые из моих потоков застряли в вышеуказанном методе. Поэтому я создал файл дампа кучи, чтобы выяснить, что содержит s и sb.

но как я могу это сделать? Я использую анализатор памяти Eclipse.

1 ответов


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

поэтому сначала вам нужно перечислить текущие потоки, и вы можете сделать это:

  1. нажмите на кнопку параметры объектов на панели действий [].
  2. выберите основы Java - > обзор потоков и стеки.

затем в списке объект для определенного потока:

  • щелкните правой кнопкой мыши -> объект списка - > исходящие ссылки

затем найдите локальную переменную с помощью тега <Java Local>