WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Out of Memory

 

dualsbiker
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.09.11
Wohnort: Wildau
Version: R2010a
     Beitrag Verfasst am: 07.09.2011, 12:21     Titel: Out of Memory
  Antworten mit Zitat      
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 ?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.09.2011, 19:37     Titel:
  Antworten mit Zitat      
Hallo,

poste doch bitte den verwendeten Code.

Was du selbst probieren kannst: die Größe der Datei weiter verkleinern und schauen, wie groß die Variablen in MATLAB werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
dualsbiker
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.09.11
Wohnort: Wildau
Version: R2010a
     Beitrag Verfasst am: 07.09.2011, 20:06     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.09.2011, 21:37     Titel:
  Antworten mit Zitat      
Hallo,

daran alleine sollte es nicht liegen. Ich habe auch auf einem 32bit-PC schon mit Variablen mit 100 und mehr MB gearbeitet.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.09.2011, 00:00     Titel:
  Antworten mit Zitat      
Hallo dualsbiker,

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.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
dualsbiker
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 06.09.11
Wohnort: Wildau
Version: R2010a
     Beitrag Verfasst am: 08.09.2011, 06:28     Titel:
  Antworten mit Zitat      
Und wie kann ich diesen belegten Speicher wieder frei machen ? Gibt es die Möglichkeit in den Matlab-Einstellungen den Speicher zu erweitern ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.09.2011, 11:31     Titel:
  Antworten mit Zitat      
Hallo dualsbiker,

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:
Code:
v = [];
for i = 1:100000
  v(i) = i;
end

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.