Speicherverwaltung bzw. Speicher wieder frei geben?!

ElJarno

Bekanntes Mitglied
Hi Leute,
eigentlich sollte es dieses Thema in Java wegen GC nicht geben. Trotzdem hab ich in meinem Programm doch argen Ressourcenverbrauch, welcher auch nicht wieder durch den GC freigegeben wird. Es ist so, ich lade Unterprogramme(JPanel) in ein JTabbedpane. Über einen integrierten Schließbutton wie Firefox/IE kann man den Tab wieder schließen. Die Panels hängen auch einzig allein in dem Tab und werden nirgendswo sonst referenziert.
Problem ist nun dass man nach zirka 30 verschiedenen Tabs ungefär 200 MB Arbeitsspeicher besetzt. Schließe ich nun die Tabs bleibt trotzdem 200 MB besetzt, dieses Spielchen zieht sich bis zirka 310 MB fort. Ab da an reagiert der GC, das Programm ist dann aber sehr träge. Gibt es ne möglichkeit den Speicher schon vorher wieder frei zu bekommen bzw. kennt ihr vlt. ein Plugin zur Analyse für Eclipse.

Gruß Jan
 

FArt

Top Contributor
Vermutlich werden die Resourcen noch referenziert obwohl die Tabs "geschlossen" wurden. Nehme er einen Profiler oder JVisualVM...
 

fastjack

Top Contributor
Gibt es ne möglichkeit den Speicher schon vorher wieder frei zu bekommen

Ja. Sorgsamer programmieren und nicht immer denken, das der GC das alles schon regeln wird ;) Der GC kann auch nur nach bestimmten Strategien alte/lose Objekte finden.

Du kannst den verbrauchten Speicher auch von Hand messen und dann an wichtigen Stellen im Programm ausgeben lassen. Schau Dir mal System.getRuntime() an und darin die speicherrelevanten Methoden.
 

ElJarno

Bekanntes Mitglied
Hi Leute,
also hab jetzt grad mal VisualVM ausprobiert, sieht ja wirklich nett aus das Tool, nur kann ich den ganzen Graphen und Tabellen nicht viel entnehmen außer halt steigendem Heap etc. Auch gibts ja ne Tabelle mit Instanzen und deren Bytegröße nur stehen da an oberster Stelle Char und Byte Arrays nur um welche und an welcher Stelle diese vor kommen kann ich dem nicht entnehmen.
Erst wesentlich Später tauchen meine Instanzreste von den Panels mit 16.000 Byte auf.

Beim MemoryAnalyzer weiß ich nicht wie ich das gestartet bekomm, in dem Tutorial
Eclipse Memory Analyser (MAT) - Tutorial
steht ja nicht wirklich wie man da hinbekommt, nur dass man dieses VM Argument nehmen soll:
-XX:+HeapDumpOnOutOfMemoryError
und ne .hprof Datei erstellen soll nur weiß ich nicht welche diese nun sein soll bei new im Menü.
 
Zuletzt bearbeitet:

ElJarno

Bekanntes Mitglied
Wenn man den Speicher vor sich sieht hilft oft auch nachdenken, z.B. wie viele Objekte von xy (Panel?) würdest du erwarten dass sie existieren, und wie viele sind es wirklich?
Ja die Anzahl stimmt auch soweit, aber wie schon beschrieben verbrauchts der meiste Speicher Byte,Char,String, und int Arrays die ich nun mal nicht direkt zuordnen kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Speicherverwaltung bei Instanz- und Klassenvariablen JS vs. Java Allgemeine Java-Themen 2
V Java, Speicherverwaltung und optimale Lastverteilung Allgemeine Java-Themen 3
G Eigene "Speicherverwaltung" Allgemeine Java-Themen 5
M Speicherverwaltung Allgemeine Java-Themen 8
M Speicherverwaltung unter Linux Allgemeine Java-Themen 7
D Speicherverwaltung von Java Allgemeine Java-Themen 2
C Virtueller Speicher Allgemeine Java-Themen 36
sascha-sphw Auf GoPro Speicher zugreifen Allgemeine Java-Themen 10
TheJavaKid Mit Java die Festplatte mit dem meisten freien Speicher finden Allgemeine Java-Themen 7
J Strings int textdokumente speicher Allgemeine Java-Themen 3
M Eine Datei im Speicher erneut laden(?) Allgemeine Java-Themen 1
L Input/Output Datei in den Speicher lesen. Allgemeine Java-Themen 9
Thallius Wie mache ich eine Java App mit Icon startbar die mehr Heap Speicher braucht? Allgemeine Java-Themen 3
P Große Datenstruktur im Speicher halten Allgemeine Java-Themen 13
H Frage wegen Heap-Speicher Allgemeine Java-Themen 2
M Speicher der VM Allgemeine Java-Themen 4
W PDFBox "Nicht genügend Speicher" Allgemeine Java-Themen 2
S Speicher-Problem Allgemeine Java-Themen 4
C Strings und JSON Objekte so klein wie möglich im Speicher ablegen Allgemeine Java-Themen 5
V Input/Output BufferedI/OStream leert den Speicher Allgemeine Java-Themen 7
G Speicher erhöhen Allgemeine Java-Themen 10
R Programm frisst 'Virtuellen Speicher' wie PacMan Allgemeine Java-Themen 4
P Java Anwendung mehr Speicher zur Verfügung stellen?? Allgemeine Java-Themen 3
A 2D-Grafik 2MB jpg wird zu 300MB im speicher (fehler) Allgemeine Java-Themen 8
D Speicher beim Start zuweisen Allgemeine Java-Themen 10
S Bei Sortierung Speicher zu gering? Allgemeine Java-Themen 8
hdi Was frisst in meinem Programm den Speicher / verschlechtert die Performance Allgemeine Java-Themen 11
S Jar Datei mit mehr Speicher starten Allgemeine Java-Themen 2
S JAR Datei, mehr Speicher bereitstellen Allgemeine Java-Themen 5
S Viele Bilder -> Speicher ausgelastet? / (De-)serialisierung geht nicht mehr richtig Allgemeine Java-Themen 8
E Speicher frei machen (List) Allgemeine Java-Themen 9
J Speicher Probleme vorbeugen Allgemeine Java-Themen 8
C Laden / Speicher Allgemeine Java-Themen 8
R Eigener Assoziativ-Speicher Allgemeine Java-Themen 7
R Assoziativer Speicher welche Unterschiede? Allgemeine Java-Themen 5
S Zugesicherter Speicher der jvm nach Programmstart erhöhen Allgemeine Java-Themen 6
G FIFO Speicher nachbilden Allgemeine Java-Themen 2
G restlichen freien Speicher ermitteln? Allgemeine Java-Themen 3
M Variablen Speicher wieder freigeben ? Allgemeine Java-Themen 9
J Wieviel Speicher maximal? Allgemeine Java-Themen 14
T Sortierter assoziativer Speicher mit Filter Allgemeine Java-Themen 4
L JVM: Speicher wieder für OS freigeben? Allgemeine Java-Themen 5
M Heap Speicher voll bei spezieller Resize Methode Allgemeine Java-Themen 5
R Gibt es eine JVM, die besser mit dem Speicher umgeht? Allgemeine Java-Themen 7
F OutOfMemoryError: Java heap space - Speicher verändern Allgemeine Java-Themen 8
O Datei im Speicher halten Allgemeine Java-Themen 4
C Speicher Problem Allgemeine Java-Themen 3
S TreeSet benötigt zu viel Speicher Allgemeine Java-Themen 5
J Out Of Memory - Speicher vergrößern? Allgemeine Java-Themen 2
L Nutzt Java bei Start der VM übermäßig viel Speicher? Allgemeine Java-Themen 3
F CPU auslastung wenn Speicher mit -Xmx erhöht Allgemeine Java-Themen 4
S Auslagerungsdatei (Speicher) werde voll Allgemeine Java-Themen 2
G Panel mit vielen Komponenten verbraucht viel Speicher Allgemeine Java-Themen 3
S Speicher Allgemeine Java-Themen 2
m@nu doppelte daten im speicher? Allgemeine Java-Themen 2
G Speicher Allgemeine Java-Themen 3
H wie viel speicher braucht eigentlich ein array? Allgemeine Java-Themen 2
A Speicher/Anzeige Problem in JTable Allgemeine Java-Themen 2
D Speicher der VM für ausführbares Jarfile erhöhen Allgemeine Java-Themen 4
D Eine geladene Klasse aus dem Speicher holen? Allgemeine Java-Themen 9
J in file schreiben frisst den speicher Allgemeine Java-Themen 5
P benötigter Speicher für Objekt Allgemeine Java-Themen 5
D Wieviel Speicher kann die VM verwalten? Allgemeine Java-Themen 18
C Über C/C++ (JNI) angeforderten Speicher wieder frei geben Allgemeine Java-Themen 3
H Speicher freigeben klappt nicht bei Image Objekten, warum? Allgemeine Java-Themen 8
B Kostet das speichern von Variablen zusätzlichen speicher? Allgemeine Java-Themen 2
T Speicher für die VM ändern Allgemeine Java-Themen 17
S Static + Speicher + Bytecode etc. Brauche HILFE :/ Allgemeine Java-Themen 11
H Wie Cpu- und Speicher- Auslastung in Java auslesen Allgemeine Java-Themen 4
F Verfügbaren Heap-Speicher setzen Allgemeine Java-Themen 2
C RAM Speicher in Datei auslagern (Java Swapping) Allgemeine Java-Themen 4
N Speicher Problem bei grossem Heap Allgemeine Java-Themen 15
S Speicher reservieren Allgemeine Java-Themen 5
R nichtmehr benötigtes BufferedImages aus dem Speicher entfern Allgemeine Java-Themen 4
Oneixee5 Oracle, wieder mal ... Allgemeine Java-Themen 12
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
LimDul Kam eine java.net.URL zu einer HashMap und ging als DNS Anfrage wieder heraus Allgemeine Java-Themen 18
W Vererbung Generics - mal wieder die verhaßte Rückwärtskompatibilität Allgemeine Java-Themen 2
V Scheinbar zufällig hin und wieder: Can't create an ImageOutputStream! Allgemeine Java-Themen 8
J Variablen Mehrere int-variablen in txt abspeichern und danach wieder auslesen Allgemeine Java-Themen 1
X NetBeans Bilder und andere Dateien ins .jar schreiben und wieder aus .jar lesen Allgemeine Java-Themen 6
2 String Array in Datei schreiben und wieder davon lesen Allgemeine Java-Themen 2
F JLabel nach 5 Sekunden wieder leeren Allgemeine Java-Themen 7
Thallius Dateien Zippen und wieder heraus lesen? Allgemeine Java-Themen 4
S Zahlen aus (String mit zahlen) immer wieder neu auslesen Allgemeine Java-Themen 5
OnDemand Input/Output Variablen in Datei Speichern um sie wieder auszulesen Allgemeine Java-Themen 4
iB0T "goto" Befehl aus Batch in Java und Variablen wert immer wieder neu setzen Allgemeine Java-Themen 4
M Regex... mal wieder Allgemeine Java-Themen 3
M CapsLock abfragen wenn Fenster wieder aktiviert wird Allgemeine Java-Themen 5
B Mal wieder "Could not find the main class" Allgemeine Java-Themen 3
C Datentypen int in bytes zerlegen und wieder zusammen setzen Allgemeine Java-Themen 13
S Strings gehen "kaputt" wenn ich in CVS ein und wieder auschecke. Allgemeine Java-Themen 2
F Wieder mal die eBay API Allgemeine Java-Themen 3
T JConsole: Klassen werden geladen aber nicht wieder entladen Allgemeine Java-Themen 3
S Thread vorübergehend stilllegen und wieder aufwecken Allgemeine Java-Themen 18
data89 A-Stern: fährt immer wieder vor die Wand! - Hilfeeee Allgemeine Java-Themen 7
L Thread kurz unterbrechen und wieder starten Allgemeine Java-Themen 5
L Applet immer wieder neu laden - Problem Allgemeine Java-Themen 25
T RegEx, wieder einmal ... :-( Allgemeine Java-Themen 19
S Wieso stehen in der API immer wieder abstrakte Methoden ? Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben