Как найти локальные переменные в файле кучи
У меня есть приложение j2ee и мониторинг его visualVM.
скажем, что у меня есть такой метод:
public void doStuff(int param) {
String s = getStringVariable(param);
StringBuilder sb = new StringBuilder();
//Do stuff with sb object
}
из крана потока я вижу, что некоторые из моих потоков застряли в вышеуказанном методе. Поэтому я создал файл дампа кучи, чтобы выяснить, что содержит s и sb.
но как я могу это сделать? Я использую анализатор памяти Eclipse.
1 ответов
вы можете получить локальную переменную из своего потока, потому что если локальная переменная в настоящее время является живой, то это означает единственной ссылкой для этой переменной является ее собственный поток.
поэтому сначала вам нужно перечислить текущие потоки, и вы можете сделать это:
- нажмите на кнопку параметры объектов на панели действий.
- выберите основы Java - > обзор потоков и стеки.
затем в списке объект для определенного потока:
- щелкните правой кнопкой мыши -> объект списка - > исходящие ссылки
затем найдите локальную переменную с помощью тега <Java Local>