LabVIEWForum.de - Arbeitsspeicher voll durch "replace array"?

LabVIEWForum.de

Normale Version: Arbeitsspeicher voll durch "replace array"?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Leute,

habe ein Problem mit meinem Programm. Ich ersetze in einer Scheife kontinuierlich Array-Elemente mit Messdaten. Ich habe bemerkt, dass trotze "ersetzen" mein Arbeitsspeicher vollläuft. Hab gegoogelt und hier gesucht, aber nix passt auf meine Frage. Wäre cool wenn ihr mir helfen könntet.

danke

p.s. das ist ein Minimalbeispiel
Hallo,
wenn das Speichermanagement von LabVIEW auch nur ähnlich der von C ist, dann ersetzt du nicht den Inhalt des Arrays, sondern lässt das Arrayelement auf einen anderen String zeigen, ohne das der ursprüngliche String zwangsweise gelöscht wird (Ich weiß nicht, ob LabVIEW eine Art Garbage Collection besitzt, die sich um sowas kümmert).

MfG Rene
Zitat:dass trotze "ersetzen" mein Arbeitsspeicher vollläuft
Kann schon mal vorkommen...
Bist du dir mit dem ReplaceArraySubset sicher? Oder ist es vielleicht doch das ständige Erzeugen von Datenkopien mit der Value-PropertyNode? Warum benutzt du nicht eine saubere FGV zum Datenspeichern statt langsamer PropertyNode-Zugriffe?

Und ja, LV besitzt eine GarbageCollection. Oder musstest du dich in LV schon einmal mit Speicherallozierung auseinandersetzen?

P.S.:
Wozu bitte die Sequenzstruktur in deinem Minibeispiel? Und wozu die Frametrennung zwischen ArrayInit und Wertzuweisung zum Indicator?
Zitat:Bist du dir mit dem ReplaceArraySubset sicher?
Ja, denn ich habe in einem anderem Programmteil auch ein Array welches ich genauso ändere und dort passiert das selbe.
Zitat:Oder ist es vielleicht doch das ständige Erzeugen von Datenkopien mit der Value-PropertyNode?
Wie geht denn sowas?
Zitat:Warum benutzt du nicht eine saubere FGV zum Datenspeichern statt langsamer PropertyNode-Zugriffe?
Weil ich dieses "Ersetzen" ziemlich oft mache und ich so nur einmal die Referenz brauche.
Zitat:Und ja, LV besitzt eine GarbageCollection. Oder musstest du dich in LV schon einmal mit Speicherallozierung auseinandersetzen?
Ich glaube das machen wir gerade :-)
Zitat:P.S.:
Wozu bitte die Sequenzstruktur in deinem Minibeispiel? Und wozu die Frametrennung zwischen ArrayInit und Wertzuweisung zum Indicator?
Vergiss das einfach, ich habe das nur schnell zusammengebaut, ist keineswegs perfekt, aber es zeigt, was ich meine...hoffentlich.

gruß
Hallo Emittance,

Zitat:Weil ich dieses "Ersetzen" ziemlich oft mache und ich so nur einmal die Referenz brauche.
Und? Die FGV brauchst du auch nur einmal - und dann sogar ohne Referenz...

Zitat:Wie geht denn sowas?
Eine Value-Property erzeugt wie eine lokale Variable immer eine Datenkopie - du arbeitest nicht mit der Speicherkopie, die das Anzeigeelement selbst besitzt!
Hallo GerdW,

Zitat:Die FGV brauchst du auch nur einmal - und dann sogar ohne Referenz...
FGV = Globale Variable? Google liefert Funktionale Globale Variable, gibts da nen Unterschied? Letzteres habe ich nämlich nicht gefunden. Ich dachte wir sprechen über eine normale globale Variable. Vielleicht gibt es sowas "noch nicht" in meiner Version?

Zitat:Eine Value-Property erzeugt wie eine lokale Variable immer eine Datenkopie - du arbeitest nicht mit der Speicherkopie, die das Anzeigeelement selbst besitzt!
Das habe ich auch noch nicht gewusst. Ich komme mir immer so blöd vor, wenn mir solche Experten helfen Big Grin Aber die geänderte Kopie sollte den voherigen "wahren" Wert doch überschreiben oder werden dann Kopien über Kopien erstellt? Kann ich den Wert dann nur "sauber" ändern, indem ich eine globale Variable verwende?

Gruß
FGV ist ein Programmierkonzept in LabVIEW. Such mal nach FGV + LabVIEW, massig Treffer.

Noch was, stimmt dein Bsp mit Array of Strings? Ein String ist ja wieder ein Array of Byte mit variabler Größe. Da ist es so eine Sache mit Speicher überschreiben.

Zusätzlich, wieso verwendest du in deinem Bsp. die PropertyNode Value(Signaling)? Die dient neben dem Setzen auch zum Auslösen eines Events in einer Eventstruktur.

Spekulation: Vielleicht werden in 7.1 diese abzuarbeitenden Events (die du mglw. gar nicht ausführst) irgendwo gespeichert und müllen dir den Speicher zu.

Gruß, Jens
Danke an alle.

Problem habe ich mit FGV und teils auch mit gewöhnlichen globalen Variablen gelöst. Werde das an anderen stellen wo ich Property Nodes habe auch dadurch ersetzen. Yourock
Referenz-URLs