2014-03-18 17 views
6

Ich habe eine j2ee-Anwendung und Überwachung von VisualVM.Wie finde ich die lokalen Variablen in Heap-Datei

Lassen Sie uns sagen, dass ich ein Verfahren wie dieses:

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

Vom Gewindebohrer, kann ich sehen, dass einige meiner Fäden in dem oben genannten Verfahren fest. Also habe ich eine Heap-Dump-Datei generiert, um herauszufinden, was s und sb enthält.

Aber wie kann ich das tun? Ich benutze Eclipse Memory Analyzer.

Antwort

11

Sie können die lokalen Variablen aus Ihrem Thread erhalten, denn wenn eine lokale Variable aktuell eine Live ist, dann bedeutet das die einzige Referenz für diese Variable ist ein eigener Thread.

So müssen Sie zuerst Ihre aktuelle Themen zur Liste, und Sie können das tun:

  1. Klicken Sie auf die Objekte Optionen -Schaltfläche von den Aktionen  [] bar.
  2. Wählen Sie Java Basics -> Threads Übersicht und Stacks.

dann das Objekts für ein bestimmtes Thema zur Liste:

  • Rechtsklick -> Liste Object -> outgoing Referenzen

dann für Ihre lokale Variable Suchen mit in einem Tag <Java Local>

+0

Danke, jetzt kann ich alle meine lokalen Variablen sehen. – Sam

+0

Herzlichen Glückwunsch für dich :) – Salah