![]() |
Arbeitsspeicher voll durch "replace array"? - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Arbeitsspeicher voll durch "replace array"? (/Thread-Arbeitsspeicher-voll-durch-replace-array) |
Arbeitsspeicher voll durch "replace array"? - Emittance - 21.07.2011 14:36 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 RE: Arbeitsspeicher voll durch "replace array"? - Rene_B - 21.07.2011 14:44 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 RE: Arbeitsspeicher voll durch "replace array"? - GerdW - 21.07.2011 15:05 Zitat:dass trotze "ersetzen" mein Arbeitsspeicher vollläuftKann 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? RE: Arbeitsspeicher voll durch "replace array"? - Emittance - 21.07.2011 15:26 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.:Vergiss das einfach, ich habe das nur schnell zusammengebaut, ist keineswegs perfekt, aber es zeigt, was ich meine...hoffentlich. gruß RE: Arbeitsspeicher voll durch "replace array"? - GerdW - 21.07.2011 15:34 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! RE: Arbeitsspeicher voll durch "replace array"? - Emittance - 21.07.2011 17:29 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 ![]() Gruß RE: Arbeitsspeicher voll durch "replace array"? - jg - 21.07.2011 17:53 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 RE: Arbeitsspeicher voll durch "replace array"? - Emittance - 23.07.2011 12:18 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. ![]() |