Speicherplatz eies RIESEN objektes direkt wieder freigeben

Status
Nicht offen für weitere Antworten.
L

lumpeh

Gast
hio

kurz gesagt geht es um folgendes. Ich habe eine Objekt einer Klasse, die Daten verwaltet. Das Programm liest dieses Daten (sehr sehr viele) aus einer TXT Datei ein und das Objekt nimmt sie auf (in Vectoren und einer hashmap). Nun muss ich aber während das Programm läuft, auch andere Dateien (die auch groß sind) einlesen und dafür brauche ich dann diese alte Datei nicht mehr (es ist immer nur eine relevant). Deshalb möchte ich das alte Objekt (mit den Vectoren und der HashMap) komplett löschen und den Speicher direkt wiederfreigeben.

Ich habe schon probiert das Objekt auf null zu setzen und dann "System.gc" aber das bringt nichts. Auch alle Collections mit clear zu resetten bringt nichts (Ich überwache den Speicherbedarf im Windows Taskmanager). Ich möchte, sobald ich den Speicher freigebe, dass im TaskManager der aufgenommene Speicher freigebene wird ..

wie kann ich das bewerkstelligen ? mit dem garbage collector aufruf funktioniert es nicht. Und meine Klasse überschreibt auch nicht "finalize()" ..

Danke für die Hilfe
 

Redfrettchen

Bekanntes Mitglied
Hallo,
ich glaube nicht, dass die JVM den Speicher sichtbar wieder freigibt, bevor sie nicht beendet wurde. Das heißt aber nicht, dass er für andere Objekte nicht weiter verwendet wird.
 

Ark

Top Contributor
1. Versuche, andere Strukturen zu finden, die das Problem mit weniger RAM bewältigen (-> temporäre Datei?)
2. Probiere mal "-Xincgc" beim Start von java.

Ark
 
L

lumpeh

Gast
die sache mit Xincgc scheint zu funktionieren!!
genau das hab ich gesucht

danke sehr :)
 
L

lumpeh

Gast
irgendwie funzt es jetzt doch nich mehr, ich muss das mal ausführlicher testen morgen :)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben