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 

Arbeitsspeicher voll durch "replace array"?



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!

21.07.2011, 14:36
Beitrag #1

Emittance Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

7.1.1
2005
EN

0
Deutschland
Arbeitsspeicher voll durch "replace array"?
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


Angehängte Datei(en) Thumbnail(s)
   

7.1 .vi  ramueberlauf.vi (Größe: 28,13 KB / Downloads: 162)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
21.07.2011, 14:44
Beitrag #2

Rene_B Offline
LVF-Grünschnabel
*


Beiträge: 11
Registriert seit: May 2011

2010
2011
DE



RE: Arbeitsspeicher voll durch "replace array"?
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.07.2011, 15:05 (Dieser Beitrag wurde zuletzt bearbeitet: 21.07.2011 15:07 von GerdW.)
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.424
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Arbeitsspeicher voll durch "replace array"?
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?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.07.2011, 15:26
Beitrag #4

Emittance Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

7.1.1
2005
EN

0
Deutschland
RE: Arbeitsspeicher voll durch "replace array"?
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ß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.07.2011, 15:34
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.424
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Arbeitsspeicher voll durch "replace array"?
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!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.07.2011, 17:29
Beitrag #6

Emittance Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

7.1.1
2005
EN

0
Deutschland
RE: Arbeitsspeicher voll durch "replace array"?
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ß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.07.2011, 17:53
Beitrag #7

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Arbeitsspeicher voll durch "replace array"?
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

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.07.2011, 12:18
Beitrag #8

Emittance Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jul 2009

7.1.1
2005
EN

0
Deutschland
RE: Arbeitsspeicher voll durch "replace array"?
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  OHNE VI: Arbeitsspeicher läuft voll ddrayss 8 5.587 12.10.2019 17:05
Letzter Beitrag: ddrayss
  Boolean durch Array bedienen Gellerpa 3 4.325 07.06.2018 20:10
Letzter Beitrag: hansi9990
  Arbeitsplatz läuft voll kompass453 6 3.738 05.09.2017 14:10
Letzter Beitrag: kompass453
  Speicher voll / Programmaufbau yapete 2 3.934 13.12.2016 16:21
Letzter Beitrag: jg
  Ersetzen von Array-Rotieren durch Rückkopplungsknoten bde2 2 3.111 27.04.2015 16:41
Letzter Beitrag: bde2
  Arbeitsspeicher läuft voll Michael1984 10 9.279 04.03.2015 09:45
Letzter Beitrag: Y-P

Gehe zu: