LabVIEWForum.de - Speicher aufräumen erzwingen?

LabVIEWForum.de

Normale Version: Speicher aufräumen erzwingen?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo LabVIEW-Geplagte,

Ich habe eine erneute Frage. Diesmal geht es um den Speicherverbrauch von LabVIEW.

Beispiel VI
Gegeben sind

Textdatei: 10MB, (1.800.000 Einträge)
Ich lese diese Datei in 3 Arrays(String Elemente) ein. Der LabVIEW Speicherverbrauch steigt auf bis zu 700MB.
Selbst wenn ich alle 3 Arrays zurücksetze

[attachment=20494]
Habe ich das Problem, dass der Speicherverbrauch weiterhin hoch bleibt.
Erst mit Beendigung des kompletten VIs wird der Speicher wieder freigeschaufelt.


Zusätzliche Frage:
Wenn man diese Arrays in anderen SubVIs weiterleitet und dort verarbeitet führt das ja zu erhöhtem Speicherverbrauch, weil im SubVI Kopien vom Array gemacht werden. Muss ich jetzt immer in jedem SubVI die Arrays zurücksetzen, so wie auf dem Bild, oder gibt es eine einfachere Methode zu sagen:Wenn Du das SubVI verlassen hast, brauchen wir die Daten darin nicht mehr --> SubVI Speicherverbrauch freigeben.

Danke schön. Bis später

LabVIEW 8.6
Deine Fragen sollten hier beantwortet sein.
Es ist zwar das meiste im angegebenem Link gesagt, aber hier noch ein paar Benerkungen:[list=1]
[*] Dein Beispiel leistet nicht mal andeutungsweise das, was Du erwartest. Für einen Array of Strings wird für jedes Element z.B. 100 byte reserviert. Daran ändert sich auch nichts, wenn es - wie in Deinem Beispiel - Leerstrings sind.
<>
[*]
Zitat:oder gibt es eine einfachere Methode zu sagen:Wenn Du das SubVI verlassen hast, brauchen wir die Daten darin nicht mehr --> SubVI Speicherverbrauch freigeben.
Genau diese Methode gibt es (rechts unten):
[attachment=20682]
und davon heißt es intelligneten Gebrauch zu machen.
Beispiel: Einmaliges Enlesen einer großen Textdatei, deren Inhalt in Zahlen konvertiert wird oder bei der nur ein Teil des Textes weiterverwendet wird . --> diese Prozedur sollte in einem Sub-VI stattfinden, dessen Speicher anschließend freigegeben wird.<>
[*]Die allgemeine Regel ist: Einfache Konverierungen/Ersetzungen mit der Inplace-Struktur vornehmen. Wo das nicht geht, Sub-Vis mit anschließender Speicherfreigabe verwenden.<>
[*] Oftmals handelt es sich bei großen Datenmengen um Messwerte, deren Präzision 16bit nicht übersteigt. Die für 16 bit adäquate Floating-Point Präzision ist Single (4bit) und nicht Double (8bit). Der Speicherverbrauch läßt sich so leicht um die Hälfte reduzieren.<>
[st]
Referenz-URLs