Verfasst am: 07.09.2011, 13:21
Titel: Out of Memory
Hallo, bin neu hier, und hab schon ein Problem bei dem ich nicht weiter komme. Hab mich auch schon anderswo belesen aber keine Lösung gefunden. Ich nutze die Befehle fopen und fread um eine Binärdatei einzulesen. Die erste Datei war über 200MB groß und es kam immer wieder der Fehler "Out of Memory". Nun hab ich das selbe mit einer kleineren Binärdatei versucht, weil ich dachte es liegt an der Größe der Datei. Aber Pustekuchen. Obwohl die Datei jetzt nur noch ein Zehntel der Größe bekomme ich den Fehler "Out of Memory".
Fällt einem von euch was dazu ein ?
Hey hey, also ich hab in zwischen folgendes herausgefunden ... selbst mit einem super duper PC konnte er die Dateien nicht laden. Problem, die meisten Programme haben bei 32bit nur eine geringe maximale Variablen-Größe, mein 64bit-Server zu Hause öffnet die Dateien ohne Probleme. Sobald ein Faktor (Betriebssystem, verwendete Software) nur 32bit hat, klappt das nicht. Ich hab mich damit jetzt einfach abgefunden. Da es sich um meine Diplomarbeit handelt, die ich im November abgeben muss, willl ich da auch garnicht so viel Zeit investieren. Zu Hause klappt es, das reicht mir. Also danke für bisheriges.
Ein 32-Bit-Matlab kann mit Variablen bis zur Größe von 2.1GB umgehen. Bei einer Filegröße von 200MB könnte eine Umwandlung von UINT8 zu DOUBLE 8*200MB belegen. Das ist zwar möglich, aber der Speicher istr offensichtlich bereits belegt.
Nicht mehr benötigten Speicher kann man mit dem Befehl CLEAR wieder freigeben - siehe "help clear".
Konkretere Tipps können wir geben, wenn Du die relevanten Code-Abschnitte postest. Meistens ist es viel hilfreicher erst gar nicht so viel Speicher zu belegen, denn das Freigeben von Speicher ist ebenfalls zeitaufwändig. Z.B. ist es extrem ineefizient, Arrays ohne Pre-allocierung wachsen zu lassen:
Obwohl am Schluß nur 100'000*8 Bytes belegt sind, werden während des Programmlaufes PROD(1:100000)*8 Bytes reserviert und kopiert. Der Speicher wird zwar automatisch wieder freigegeben. Es kann aber dennoch ein OUT-OF-MEMORY auftreten, wenn der zur Verfügung stehende Speicher erschöpft ist.
Gruß, Jan
Options and Permissions
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.