4 Stimmen

Wie kann ich ein Speicherleck in NetBeans besser untersuchen?

Ich schreibe eine Netzspinne. Es funktioniert gut, außer dass es ein Speicherleck zu geben scheint. Das Programm läuft gut für etwa 15 Minuten und dann stürzt es ab.

Wenn ich es mit der Funktion "Profil" in NetBeans überwache, kann ich sehen, dass der Speicher mit der Zeit zunimmt, bis ich schließlich eine java.lang.OutOfMemoryError und das Programm stürzt komplett ab.

Das Bild unten zeigt Schnappschüsse des Speichers von Objekten, die nach einer Minute und nach 15 Minuten (kurz vor dem Absturz) verwendet werden. Gibt es eine Möglichkeit zu sagen, wo diese Objekte (meine Hauptschuldigen sind byte[] y char[] ) erstellt werden oder was referenziert sie noch (und verhindert somit, dass sie vom Garbage Collector zerstört werden)?

Oder habe ich keine Ahnung, wovon ich spreche?

alt text

Danke, ich weiß die Hilfe zu schätzen.

2voto

Lukas Eder Punkte 194234

Wahrscheinlich liegen Sie mit Ihrer Vermutung richtig, aber vielleicht benutzen Sie nicht das richtige Werkzeug?

Ich kenne NetBeans nicht, aber ich weiß, dass sowohl Yourkit Profiler als auch JProfiler sehr leistungsfähige Werkzeuge für diese Art von Analysen sind. Sie können den Heap durchwandern und "Hot Spots" analysieren. Für beide Tools gibt es eine Testlizenz, so dass Sie sie ausprobieren können, um zu sehen, welches am besten zu Ihnen passt.

1voto

a_horse_with_no_name Punkte 489934

Wenn Sie den Profiler verwenden, um den Speicher zu analysieren, können Sie die Aufzeichnung der Stack Traces für die Objektzuweisung aktivieren.

Wenn Sie in diesem Modus arbeiten, können Sie mit der rechten Maustaste auf die Klasse klicken und die Stapelverfolgung(en) anzeigen, in denen die Objekte erstellt werden. Damit sollten Sie genügend Informationen haben, um das Speicherleck aufzuspüren.

Vielleicht möchten Sie auch diesen Artikel lesen: http://netbeans.org/community/magazine/html/04/profiler.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X