|
Snowdog |

Forum-Fortgeschrittener
|
 |
Beiträge: 57
|
 |
|
 |
Anmeldedatum: 12.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.09.2010, 10:10
Titel: Out of Memory
|
 |
Hallo erst mal.
Ich habe ein Problem mit meinem Speicher.
Und zwar habe ich ein GUI geschrieben, welches auch gut funktioniert.
Mein Problem ist jetzt wenn ich das GUI aufrufe füllt sich mein Speicher.
Wenn ich es jetzt schließe leert sich mein Speicher aber nicht mehr.
Fazit: Bei jedem Aufruf des GUIs füllt sich mein Speicher bis das er "überläuft". Egal ob ich es wieder schließe oder nicht.
Ich kann das Problem bisher nur so lösen, indem ich mein MATLAB zwischendurch schließe und wieder neu starte. Dann ist der Speicher wieder soweit leer.
Hat jemand ne idee woran das liegen könnte? bzw eine Lösungsmöglichkeit?
Gruß
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 06.09.2010, 10:38
Titel:
|
 |
Hallo,
das ist ungewöhnlich. Normalerweise ist ein komplexes Programm aus Funktionen zusammengesetzt, und beim Verlassen einer Funktion wird der Speicher wieder freigegeben.
Zudem kannst du Variablen manuell mit clear löschen.
Mehr kann ich dir ohne genauere Kenntnis des Codes nicht weiterhelfen.
Grüße,
Harald
|
|
|
Snowdog |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 57
|
 |
|
 |
Anmeldedatum: 12.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.09.2010, 11:03
Titel:
|
 |
Also ich habe ein GUI ohne GUIDE geschrieben. Wenn ich es starte kann ich über einen Button eine Zeit starten. Ist diese abgelaufen werden verschiedene Funktionen nacheinander abgearbeitet. Die erste Funktion bekommt ein Image zur Verfügung gestellt und nachdem alle Funktionen durchgelaufen sind wird ein verändertes Image angezeigt sowie Daten in Form mehrerer Cells im workspace ausgegeben. Es sind insgesamt 38 Cells, welche alle 9 einzelne Zellen beinhalten. Die ersten 6 Zellen beinhalten einen Skalar, Zelle 7 und 8 einen Vektor mit 5 Elementen und Zelle 9 eine Matrix (5x65 double). Die Daten werden bei jedem Durchlauf der Zeit wieder überschrieben. Also gibt es hier keinen "Überlauf". Alle Funktionsübergreifenden Daten werden mit handles übergeben.
Schließe ich das GUI und starte es danach neu ist der Speicherbedarf von 317MB auf 410MB angewachsen. Beim nächsten mal auf 520MB. Nachdem ich clear all eingegeben habe brauch ich immer noch 516MB.
Gruß
|
|
|
Linus |

Forum-Fortgeschrittener
|
 |
Beiträge: 69
|
 |
|
 |
Anmeldedatum: 30.08.10
|
 |
|
 |
Wohnort: Aachen
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 06.09.2010, 18:28
Titel:
|
 |
1. Hilft das hier auch nicht?
2. Kannst du rausfinden, wo der Speicher hin ist, z.B. mit
?
|
|
|
Snowdog |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 57
|
 |
|
 |
Anmeldedatum: 12.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.09.2010, 19:59
Titel:
|
 |
löscht mir zwar alle Variablen aber der Speicher bleibt trotzdem voll (bis auf die 2MB weniger von den Variablen
Das bringt kein Ergebnis, da ich ja alle Variablen vorher gelöscht habe, es werden also kein Speicher für Variablen belegt
Hat noch jemand eine Idee bzw. kann jemand mal öfters sein GUI ausführen und wieder schließen und sein Speicher mit memory überprüfen.
Danke für jede Antwort!!!
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 07.09.2010, 22:21
Titel:
|
 |
Hallo Snowdog,
MEMORY zeigt an, wieviel Speicher Matlab verwendet. Bist Du aber auch sicher, dass dieser Speicher belegt ist?
Was geschieht nach PACK?
Was geschiet, wenn Du eine große Matrix definierst, z.B. mit RAND(1, 1e7)?
Gruß, Jan
|
|
|
Snowdog |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 57
|
 |
|
 |
Anmeldedatum: 12.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.09.2010, 16:30
Titel:
|
 |
|
 |
|
Also wenn ich das GUI oft genug (ca. 20 mal) öffne, ausführe und schließe, wird das GUI beim nächsten ausführen abgebrochen und im command window erscheint "Out of memory. Type HELP MEMORY for your options". Wenn ich nun "memory" eingebe erscheint
Maximum possible array: 20MB (2.139e+007 bytes) *
Memory available for all arrays: 249MB (2.614e+008 bytes) **
Memory used by MATLAB: 1537MB (1.612e+009 bytes)
Physical Memory (RAM): 2038MB (2.137e+009 bytes)
* Limited by contiguous virtual adress space available.
** Limited by virtual adress space available
Das Programm wird also abgebrochen da Memory used by MATLAB zuviel verwendet.
Wenn ich "clear all" eingebe löschen sich zwar alle meine Variablen aber Memory used by MATLAB sinkt nur um 10MB und Memory available for all arrays steigt somit um 10MB. Mein Problem bleibt natürlich erhalten.
Bei Pack wird der Speicher den ich mit MATLAB brauche auch nur unwesentlich kleiner.
Die Matrize kann jetzt natürlich auch nicht erzeugt werden. Ich bekomme wieder die Fehlermeldung Out of Memory
Die einzige Lösung die ich bis jetzt habe ist MATLAB neu zu starten.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 09.09.2010, 14:55
Titel:
|
 |
Hallo Snowdog,
ok. Dann gibt es in Deinem Programm Memoryleaks. Rufst Du irgendwelche Mex-Funktionen auf, die vielleicht per malloc Speicher besorgen und nicht wieder zurück geben?
Sind die GUIs vielleicht nur unsichtbar, aber nicht gelöscht? Dann würde dies etwas finden:
Hast Du PERSISTENT Variablen in LOCKed M-Files gespeichert? Die kann CLEAR auch nicht entsorgen.
Viel Erfolg beim Suchen! Jan
|
|
|
Snowdog |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 57
|
 |
|
 |
Anmeldedatum: 12.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.09.2010, 08:08
Titel:
|
 |
Hallo Jan,
Bei
bekomme ich als Antwort
M = 'workspacefunc'
'imformats'
'mltimerpackage'
Mex = Empty cell array: 0-by-1
Daraus schließe ich das hierdurch kein Speicher belegt ist.
Wenn ich
bekomme ich als Antwort
ans = Empty matrix: 0-by-1
Daraus schließe ich das hierdurch kein Speicher belegt ist.
Jetzt muss du mir nur noch erklären was PERSISTENT Variablen in LOCKed M-Files sind. Das hab ich noch nie gehört.
Gruß Snowdog
|
|
|
gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.05.2011, 15:03
Titel:
|
 |
ich habe leider das selbe problem, gibt es noch tips?
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 17.05.2011, 16:13
Titel:
|
 |
Hallo gast
Zitat: |
ich habe leider das selbe problem, gibt es noch tips? |
Das ist eine sehr allgemeine Frage. Es gibt jede Menge Tipps, aber Snowdogs Problem wurde dadurch ausgelöst, dass er nicht herausfand, wer seinen Arbeitsspeicher belegt. Die Lösung ist es, diese Stelle zu finden - die wird aber bei Dir wohl eine ganz andere sein!
Man kann z.B. aus Versehen 100.000 Timer-Objekte erstellen, oder Java-Button erstellen und ihre Callback-Pointer ins Nirvana zeigen lassen, oder hunderte andere Dinge.
Bitte poste irgendwelche Details.
Gruß, Jan
|
|
|
gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.05.2011, 10:34
Titel:
|
 |
ich glaube mein süezielles Problem liegt in der Erzeugung einer cell Variablen. Dies mache ich über deine for Schleife
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|