title image


Smiley Java und Speicher...
Hallo,



ich habe ein Problem mit dem Speichermanagement. Meine Anwendung greift auf eine Menge von etwa 10 bis 50 MP3-Dateien zu, die alle ungefähr 3 bis 7 MB groß sind. Es wird per RandomAccessFile immer auf die letzten 128 Bytes und manchmal auf die ersten etwa 100 bis 200 Bytes jeder dieser Dateien zugegriffen. Sonst wird nichts eingelesen und ich setze auch keine Schreibzugriffe ab.

Ich halte nach Ende der Dateizugriffe keinerlei Referenzen mehr auf die benutzten RandomAccessFiles (nur die eingelesenen Bytes werden behalten, und noch ein File-Objekt pro Datei, aber darüber werden ja keine Lesezugriffe ausgeführt).

Mein Rechner hat 1200 MHz 384 MB RAM Win2000 JDK 1.5 und ich setze beim Start meiner Anwendung mit -Xmx200M den verfügbaren Heap auf 200 MB. Trotzdem kriege ich oftmals gleich nach Start der Anwendung schon beim erstmaligen Zugriff auf 10 Dateien nach oben beschriebener Art eine OutOfMemory-Ausnahme, im Taskmanager schnellt der angezeigte Speicherverbrauch von "javaw.exe" innerhalb weniger Sekunden von 20 auf 200 MB.

Verdacht: kann es sein, dass RandomAccessFile immer automatisch größere Blöcke einliest (z.B. mehrere MB), selbst wenn man wie ich nur eine kleinere Anzahl von Bytes einliest? Konnte darüber keine Info finden.

Gibt es irgendeine andere Möglichkeit, z.B. eine Art "file mapping"?



Danke & Gruß

Christian



// EDIT

Gibt es irgendein/e Anwendung/Eclipse-Plugin, mit der/m man Info über die Größe des von einem bestimmten Objekt beanspruchten Speicher bekommen kann, eine Art Profiler?




________________________________________________________________

Je mehr wir wissen, um so tiefer schweigen wir und um so hoffnungsloser vereinsamen wir.
José Ortega y Gasset
________________________________________________________________
Mikroseite / Heimseite


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: