INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Speicher von genutztem Array freigeben



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

07.05.2016, 08:12
Beitrag #3

moTo Offline
LVF-Grünschnabel
*


Beiträge: 10
Registriert seit: Apr 2016

2015
2015
EN



RE: Speicher von genutztem Array freigeben
Hallo GerdW,

vielen Dank erstmal für deine Antworten und dass du dir so viel Zeit dafür nimmst!

Zitat:Warum nicht? Jede Referenz sollte geschlossen werden - vor allem, wenn damit relativ viel Speicher belegt wird!
Genau das ist hier das Problem: IMAQ-Images sind eben nicht direkt Bilddaten, sondern nur Referenzen auf die Bilddaten. Und diese Referenzen werden von dir nicht geschlossen, sondern einfach mit neuen leeren Referenzen überschrieben!
Also: deinen Speicher freigeben, indem jede Referenz im Array mit IMAQClose freigegeben wird!
Die IMAQClose Funktion schließt aber nur Sessions, und keine IMAQ Bilder, bzw. der Input einer solchen Close Funktion ist immer eine Session. Die schließe ich am Ende der Aufnahme auch wieder, trotzdem bleibt der Speicher belegt.

Zitat:Weitere Fehler:
- Warum nutzt du nicht AutoCleanup? Dein BD würde mindestens um den Faktor 2 kleiner!
Hatte ich vergessen, sorry. Ich nutze das Auto Cleanup in meinem großen VI nicht mehr, da mir das Ergebnis zu unübersichtlich ist.

Zitat: - Deine WhileLoop läuft 1001× durch, obwohl dein Array nur 1000 Referenzen enthalten soll (Test auf "i>=1000"!)…
Ist mir auch aufgefallen, habe ich entsprechend korrigiert Smile

Zitat: - Warum initialisierst du dein Array mit 1000 leeren Referenzen, wenn diese in der Schleife danach von neuen Referenzen überschrieben werden?
Ich wusste ehrlich gesagt gar nicht, dass dabei nur Referenzen erstellt werden, dann nehm ich das mal aus meiner Initialize Funktion raus..

Zitat: - Warum keine FOR-Loop statt der While-Loop, wenn die maximale Iterationszahl schon vorher feststeht?
Stimmt, in diesem Beispiel wäre das besser gewesen, in meinem Haupt VI brauche ich eine While Loop, da dort das Ende idR unbestimmt ist.

Zitat: - Warum ein Schieberegister für dein Array? Warum nicht einen autoindizierenden Ausgangstunnel für die Array-Daten? Wenn dann am Ende keine 1000 Werte zusammenkommen, weil die Loop vorher abgebrochen wird, kannst du immer noch entsprechend viele leere Referenzen ans Array anhängen!
Ich habe in einem anderen Forum gelesen, dass es besser ist, ein Array vorher zu initialisieren und dann die replace Funktion zu benutzen, da es weniger Ressourcen benötigt. Ist dem nicht so?

Zitat: - Du hast eine RaceCondition beim Lesen der "Session Out" per PropertyNode! Warum überhaupt dieser Zugriff per Propertynode, wenn der Wert in SessionOut im VI selbst erstellt wird? "The wire keeps the value!"
Hier im Beispiel wäre es tatsächlich unnötig, in meiner State Machine wird die Kamera aber an anderer Stelle initialisiert und ich greife dann per Referenz auf die Session zu, da ich keine lokalen Variablen verwenden möchte.


Mir ist auch aufgefallen, dass der Arbeitsspeicher beim erneuten ausführen nicht noch größer wird, sofern man weniger Bilder als vorher erstellt. Daher scheint der Platz nicht wirklich belegt zu sein, sondern nur ,,reserviert'', oder was denkst du?

Danke und beste Grüße,
moTo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
RE: Speicher von genutztem Array freigeben - moTo - 07.05.2016 08:12

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Speicher läuft in Statemachine voll (großes Array...) Peter04 5 7.730 30.11.2013 22:42
Letzter Beitrag: D_Sev
  Frage zu Melder/Queues freigeben Hasenfuss 4 6.448 27.03.2013 10:15
Letzter Beitrag: Hasenfuss
  "Initialize Array" allokiert Speicher 4-fach (Labview 2009 Win XP 32Bit) tinger 6 6.957 06.03.2012 11:44
Letzter Beitrag: tinger
  Tabelle: Speicher freigeben? danielsan 3 5.876 20.10.2009 10:30
Letzter Beitrag: IchSelbst
  array aus speicher entfernen billabong 12 12.785 16.07.2009 17:35
Letzter Beitrag: billabong
  String Array Werte (200 )in Datei speicher blitzgeist 1 2.851 13.06.2006 15:35
Letzter Beitrag: Kvasir

Gehe zu: