Wir haben eine Wicket-Anwendung, die nicht mehr genügend Arbeitsspeicher. Ich bekomme folgenden Fehler.Auflösen von Speicherverlust in Wicket
java.lang.OutOfMemoryError: GC overhead limit exceeded
Als ich Heapdump nahm, kann ich sehen, folgende
Mein Code wie unten aussieht.
Von was ich gelesen habe, serialisiert Wicket Instanz dieser Klasse und speichert in Sitzung. Ist es die Ursache für dieses Leck? Wie kann man das verhindern?
Wie Sie oben sehen können, habe ich jMat verwendet, um Heap Dump zu analysieren. "Wie diese Referenzen im Classloader aufbewahrt werden ..." Können Sie ein wenig ausarbeiten? Sie meinen, wer bezieht sich auf dieses Objekt? –
Rechts. Sie müssen den Pfad vom Objekt zum Klassenlader finden. Auf diese Weise können Sie verstehen, warum sie nicht GC-ed sind. –