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 läuft in Statemachine voll (großes 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!

26.11.2013, 14:52
Beitrag #1

Peter04 Offline
LVF-Stammgast
***


Beiträge: 305
Registriert seit: Jan 2008

2020
2007
DE_EN

79xxx
Deutschland
Speicher läuft in Statemachine voll (großes Array...)
Hallo,

ich hab aktuell das Problem, dass in einer Statemachine der Arbeitsspeicher vom Rechner voll läuft. Das schaue ich mir mit dem Win TaskManager an.
Ich hab mal ein kleines Beispiel angehangen. Da wird zunächst der Speicher mit einem immer größeren Array bewußt vollgepackt. Aber wenn ich auf löschen gehe habe ich eigentlich erwartet, nachdem ein leeres Array übergeben wurde, dass der Speicher wieder leer wird. Wird er aber nicht. Was mach ich denn da falsch, bzw. wie bekomme ich den Speicher effizient leerer?

Gruß
Peter

LV2011

11.0 .vi  StateMachine vs Speicher_01.vi (Größe: 17,48 KB / Downloads: 312)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
26.11.2013, 15:32
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Speicher läuft in Statemachine voll (großes Array...)
Hallo Peter,

erstmal habe ich die Statemachine aufgeräumt...

Dann zum Problem:
Der Taskmanager zeigt den Speicher an, den LabVIEW (als IDE) reserviert hat. Dies ist nicht der Speicher, den dein VI aktuell benötigt...
LabVIEW holt sich Speicher vom OS und verwaltet diesen selbst. Allzu viele Eingriffmöglichkeiten hat man da nicht außer evtl. frommen Wünschen...


Angehängte Datei(en)
11.0 .vi  StateMachine vs Speicher_01.vi (Größe: 15,01 KB / Downloads: 296)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.11.2013, 16:14
Beitrag #3

Peter04 Offline
LVF-Stammgast
***


Beiträge: 305
Registriert seit: Jan 2008

2020
2007
DE_EN

79xxx
Deutschland
RE: Speicher läuft in Statemachine voll (großes Array...)
Hallo Gerd,

danke für die Info. Dein Aufräumarbei (case Struktur entfernen) macht natürlich Sinn.
Das Beispile ist ja nur ein Minimalbeispiel. Normal läuft das Array erstellen auch im subvi und nach Weiterverarbeitung habe ich auch dieses "Speicher freigeben" vi angehängt. Hab aber wohl das "Wünschen" vergessen, denn da hat sich nix geändert. Aus dem größeren Projekt hab ich auch ne exe erstellt und da kann ich (im Taskmanager) schön zusehen, wie der RAM Verbrauch von 2 auf ca. 45% ansteigt und dann stürzt die exe ab. Meist ohne Fehlermeldung.
Also muss ich wohl stärker die Daumen drücken oder Schauen, ob ich das vielleicht ganz anders aufbauen kann.

Gruß
Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.11.2013, 16:24 (Dieser Beitrag wurde zuletzt bearbeitet: 26.11.2013 16:24 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.467
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Speicher läuft in Statemachine voll (großes Array...)
Hallo Peter,

statt auf den Speicherverbrauch zu schauen, solltest du eher das Erstellen von Arrays aus 1000×1000 Strings (variabler Länge!) überdenken...

- Das Erzeugen unlimitierter (großer) Arrays ist immer schlecht bzgl. Speicherhandling...
- Das Erzeugen großer Stringarrays ist noch schlechter, da hier eine wesentlich kompliziertere Speicherstruktur dahintersteht (im Vergleich mit fixen Datentypen wie DBL-Zahlen)...

Merke: Wann immer du BuildArray in deinen Programmen nutzt, musst du mit Speicherproblemen rechnen.
Und diese kann man nicht abfangen, entsprechende Wünsche werden von NI bisher nicht umgesetzt... Sad

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.11.2013, 16:26
Beitrag #5

Peter04 Offline
LVF-Stammgast
***


Beiträge: 305
Registriert seit: Jan 2008

2020
2007
DE_EN

79xxx
Deutschland
RE: Speicher läuft in Statemachine voll (großes Array...)
Hello again,

erstmal Danke für die bisherigen Tipps.

Ich hätte da aber noch mal ne Frage. Ich hab mir mal die Hilfe von NI bzgl. "Konfigurieren von vi-Aufrufen" angeschaut:
http://zone.ni.com/reference/de-XX/help/...ringcalls/
Bisher hab ich mich da nie drum gekümmert und alle subs mit dem Main geladen.

Dei Hilfe sagt "Beim ersten Aufruf laden und halten [...] wird das SubVI erst bei Bedarf geladen und nach dem Abschluss der Operation aus dem Speicher entfernt." Das hört sich ja hilfreich an.
Und "Bei jedem Aufruf neu laden [...] wird nicht garantiert, dass das SubVI auch nach dem Aufruf im Speicher bleibt.

Also nach meinem Verständnis sollte doch eigentlich "bei jedem Aufruf neu laden" weniger Speicher brauchen, wenn die subs mit dem großen Array immer neu geladen werden. Und bei "laden und halten" wird es aus dem Speicher entfernt!?

Übersetzungsfehler oder Verständnisfehler?

Gruß
Peter

P.S.: @ GerdW: in der Praxis habe ich ein ca. 10000x2 String Array erstellt mit BuildArray
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.11.2013, 22:42
Beitrag #6

D_Sev Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 56
Registriert seit: Nov 2013

2012
2011
DE_EN


Deutschland
RE: Speicher läuft in Statemachine voll (großes Array...)
Vielleicht hilft das ?


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Frage zur Architektur: Statemachine und Wait for Events tuhpon 6 4.489 18.03.2024 16:14
Letzter Beitrag: tuhpon
  Statemachine-Projekt… riu14 18 12.488 15.06.2022 13:44
Letzter Beitrag: jg
  OHNE VI: Arbeitsspeicher läuft voll ddrayss 8 6.442 12.10.2019 17:05
Letzter Beitrag: ddrayss
  Statemachine mit Notifier hulk 5 4.855 14.12.2017 20:02
Letzter Beitrag: Pronet
  Arbeitsplatz läuft voll kompass453 6 4.402 05.09.2017 14:10
Letzter Beitrag: kompass453
  Statemachine programmieren… Granit 8 10.848 30.04.2017 16:42
Letzter Beitrag: Granit

Gehe zu: