14.05.2018, 11:06
Hallo Leute,
mit dem angehängten SubVI lese ich einen Teil der Desktops aus. Dies geschieht mit den System .NET Klassen (system.drawing) (den Programmteil habe ich im Netz gefunden). Soweit ich das sehe, werden am Ende alle Objekte geleert und alle Referenzen geschlossen. Nur das Bild wird ausgegeben (und 4 mal I32 und ein Error Cluster). Packe ich dieses SubVI in eine Schleife (und lasse mir das Bild anzeigen über „Serialisierte Pixmap zeichnen“ und „2D-Bild“), läuft langsam der Arbeitsspeicher voll, bis zur Fehlermeldung: „Nicht genügend Speicher zum Abschließen dieser Operation.“ Ich verstehe nicht so ganz warum. Das Bild sollte doch in jedem Schleifendurchlauf durch das neue Bild ersetzt werden. Ist vielleicht doch im SubVI irgendein Objekt nicht richtig geleert worden und füllt so bei jedem Aufruf den Arbeitsspeicher mehr und mehr?
Die LabView Hilfe hat mir nicht wirklich weiter geholfen: Ich sehe zwar im „Profil – Leistung und Speicher → Speicherauslastung“-Fenster das das SubVI viel Speicher braucht (das ist nun mal so bei Bildern), ich sehe aber nicht ob dieser wieder frei gegeben wird. Leider zeigt mir auch dieses Fenster nicht wie groß die .NET-Objekte sind und ob deren Speicher am Ende jedes Aufrufs geleert ist.
Hab auch schon im Netz nach den .NET-Objekten (in C#, VB, usw.) gesucht. Hier ist der Fehler auch bekannt. Es hängt immer daran, dass die Objekte nicht richtig geleert werden oder die Referenzen nicht geschlossen werden. Soweit ich das erkennen kann, wird dies im SubVI aber richtig gemacht.
Zu „Speicher läuft voll“ und Ähnlichen hab ich hier (und im Netz) einiges gefunden aber eben leider nicht im Zusammen mit .NET-Objekten. Ich hoffe daher einer von Euch kann mir hier weiter helfen.
Danke.
Viele Grüße,
Andi
mit dem angehängten SubVI lese ich einen Teil der Desktops aus. Dies geschieht mit den System .NET Klassen (system.drawing) (den Programmteil habe ich im Netz gefunden). Soweit ich das sehe, werden am Ende alle Objekte geleert und alle Referenzen geschlossen. Nur das Bild wird ausgegeben (und 4 mal I32 und ein Error Cluster). Packe ich dieses SubVI in eine Schleife (und lasse mir das Bild anzeigen über „Serialisierte Pixmap zeichnen“ und „2D-Bild“), läuft langsam der Arbeitsspeicher voll, bis zur Fehlermeldung: „Nicht genügend Speicher zum Abschließen dieser Operation.“ Ich verstehe nicht so ganz warum. Das Bild sollte doch in jedem Schleifendurchlauf durch das neue Bild ersetzt werden. Ist vielleicht doch im SubVI irgendein Objekt nicht richtig geleert worden und füllt so bei jedem Aufruf den Arbeitsspeicher mehr und mehr?
Die LabView Hilfe hat mir nicht wirklich weiter geholfen: Ich sehe zwar im „Profil – Leistung und Speicher → Speicherauslastung“-Fenster das das SubVI viel Speicher braucht (das ist nun mal so bei Bildern), ich sehe aber nicht ob dieser wieder frei gegeben wird. Leider zeigt mir auch dieses Fenster nicht wie groß die .NET-Objekte sind und ob deren Speicher am Ende jedes Aufrufs geleert ist.
Hab auch schon im Netz nach den .NET-Objekten (in C#, VB, usw.) gesucht. Hier ist der Fehler auch bekannt. Es hängt immer daran, dass die Objekte nicht richtig geleert werden oder die Referenzen nicht geschlossen werden. Soweit ich das erkennen kann, wird dies im SubVI aber richtig gemacht.
Zu „Speicher läuft voll“ und Ähnlichen hab ich hier (und im Netz) einiges gefunden aber eben leider nicht im Zusammen mit .NET-Objekten. Ich hoffe daher einer von Euch kann mir hier weiter helfen.
Danke.
Viele Grüße,
Andi