LabVIEWForum.de - virtueller Arbeitsspeicher läuft voll

LabVIEWForum.de

Normale Version: virtueller Arbeitsspeicher läuft voll
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich habe für Arbeit ein IV geschrieben bei dem eine Energie hochgerampt wird und bei jeder Energie 6 Bilder mit einer Pixelfly Kamera gemacht werden. Beid der Ausführung des IV (von 20V bis 400V in 0,25V Schritten) wird der virtuelle Speicher sehr schnell voll und das Programm stürzt ab.

Ich weiß nicht ob es an den Bildern liegt, die gemacht werden, oder ob es an den Dateipfaden liegt bzw. einen Array liegt.

Ich habe schon folgendes versucht zur Problembehebung:

1. den virtuellen Speicher über die Eingabeaufforderung auf maximal gesetzt
2. die Anzeige des Bildes raus genommen
3. alles was die Kamera betrifft in ein SubIV gesteckt und dort explizit die Funktion Flag verwendet (Wenn Flag TRUE ist, wird der Speicher nach der Ausführung des VIs, das diese Funktion enthält, wieder freigegeben.)

Hilft aber alles nix, das Programm macht nach ca. 1h den Speicher voll.

Anbei habe ich euch mal mein IV angefügt. Ich hoffe hier kann mir jemand helfen.
Jedes IMAQ-Create erzeugt Speicherplatz im RAM für 1 Bild, der aber erst wieder durch ein IMAQ-Close freigegeben wird. Und da wunderst du dich, wenn dir der Speicher vollläuft?

Gruß, Jens
Thx für die schnelle Antwort, ich habe jetz nach dem Speichern einfach die Funktion "IMAQ dispose" drangehauen und es scheint gut zu gehen. Thx!
Hallo Jens

(23.03.2012 14:30 )jg schrieb: [ -> ]Jedes IMAQ-Create erzeugt Speicherplatz im RAM für 1 Bild

so ist das (meiner Meinung nach) nicht. Du kannst in einer Schleife Milliarden von IMAQcreate machen und nichts passiert ... aber nur wenn man immer den selben Namen nimmt. Ich habe aufgehört temporäre Bilder am Anfang eines VIs zu erzeugen und am Ende zu löschen - das braucht viel länger als immer wieder verwenden.

Viele Grüße

Gottfried
(26.03.2012 07:21 )gottfried schrieb: [ -> ]Hallo Jens

(23.03.2012 14:30 )jg schrieb: [ -> ]Jedes IMAQ-Create erzeugt Speicherplatz im RAM für 1 Bild

so ist das (meiner Meinung nach) nicht. Du kannst in einer Schleife Milliarden von IMAQcreate machen und nichts passiert ... aber nur wenn man immer den selben Namen nimmt. Ich habe aufgehört temporäre Bilder am Anfang eines VIs zu erzeugen und am Ende zu löschen - das braucht viel länger als immer wieder verwenden.

Viele Grüße

Gottfried
@Gottfried: Du hast natürlich Recht, wenn derselbe Name beim IMAQ-Create verwendet wird, dann wird kein neuer Speicher angelegt. Das hätte ich genauer schreiben sollen.
Im Bsp-Programm des Fragestellers werden aber dauernd neue Bilder angelegt. Und dann wird zumindest schon mal der Pointer auf ein leeres Bild angelegt. Und selbst das dürfte dir auf Dauer den Speicher vollmüllen.

Allgemein: Referenzen, die man in LabVIEW öffnet, sollte man auch immer schließen.
Dazu gehören nicht nur Vision-Bilder, auch .NET oder ActiveX-Refnums, FileRefnums, etc. pp.

Gruß, Jens
Referenz-URLs