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 

Frage zu Melder/Queues freigeben



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.03.2013, 14:08
Beitrag #1

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



Frage zu Melder/Queues freigeben
Ich habe eine Frage bezüglich Freigabe von Meldern/Queues:

Wenn ich ein Programm beende, aber nicht die Funktion Melder/Queues freigeben beim Beenden mache - werden solche Queues/Melder im Speicher belassen oder mit dem Beenden des Programms auch gelöscht? Oder z.B. wenn ich das Programm (wenn es noch nicht als Exe-Datei compiliert wurde) und ich dann auf Unterbrechen/Abbrechen klicke?

Falls mir jemand diese Frage beantworte kann, würde ich mich drüber freuen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
26.03.2013, 16:36
Beitrag #2

eb Offline
LVF-Lernwilliger
***


Beiträge: 292
Registriert seit: Mar 2008

2014
2008
EN

12xxx
Deutschland
RE: Frage zu Melder/Queues freigeben
Hallo,

solange hier noch keiner von den absoluten Profis antwortet geb ich mal meine bescheidene Meinung ab:
Ich denke, dass die Referenzen auf die Queues/Melder sehr wohl im Speicher bleiben. Und zwar solange die Applikationsinstanz "lebt". Also entweder LabVIEW in der IDE oder eben die Exe als solches. (wenn das VI als Exe kompiliert wurde). Das ist ja genau der graus mit den Speicherlecks: Wenn man vergisst die Refs zu schließen und diese aber in einer Schleife immer neu erzeugt werden (aber nie benutzt) dann sammeln sich die Refs eben an und müllen den Speicher zu.

Hier ein kleines getestetes Bsp: ACHTUNG Speicherzumüllung inside!!
- wenn das VI startet wird sehr schnell der Speicher zugemüllt mit unbenutzten und sofort wieder vergessenen Refs auf unbenannte Queues
- Stoppt man die Q-Creation dann geht das Programm in den Wartemodus und man kann z.B. im Taskmanager sehen wie viel Speicher schon hinzugekommen ist.
- Stoppt man die WarteSchleife wird die Q wieder freigegeben, aber eben nur die EINE LETZTE und nicht die Tausenden davor. Deswegen bleibt der Datenmüll (unbenutzte Refs) im Speicher
- Stoppt man das VI (in der IDE) passiert nichts weiter, der Datenmüll bleibt
- NUR wenn man LabVIEW komplett schließt (wenn das VI ausgeführt wurde) oder die Exe schließt (wenn VI als Exe kompiliert wurde), wird der Speicher wieder freigegeben.
   

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.03.2013, 17:06
Beitrag #3

BNT Offline
LVF-Freak
****


Beiträge: 740
Registriert seit: Aug 2008

5.0 - 22Q3
1999
EN

64291
Deutschland
RE: Frage zu Melder/Queues freigeben
Gut erläutert.

Gruß Holger

NI Alliance Partner & LabVIEW Champion
GnuPG Key: 6C077E71, refer to http://www.gnupg.org for details.
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
26.03.2013, 20:02 (Dieser Beitrag wurde zuletzt bearbeitet: 26.03.2013 20:03 von Lucki.)
Beitrag #4

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Frage zu Melder/Queues freigeben
Die Frage war ja, was beim Beenden das Programms passiert. Mein Erfahrungen sind die: Das kommt darauf an, ob man sich in der Entwicklungsumgebung befindet oder ein Exe hat.
Entwicklungsumgebnung: Der Speicher wird nicht mit dem Beenden des Programms freigegeben, sondern erst mit Beenden von Labview. EXE: Speicher wird beim Beenden freigegeben.

Entwicklungsumgebung genauer:

Szenarium 1: Wenn man Programm 1 schließt, ohne die Queues zu löschen, und startet ein ganz anderes Programm 2, dann hat Programm 1 weniger Memory zur Verfügung.

Szenarium 2: Wenn man Programm 1 schließt, und startet es wiederholt, dann kommt es darauf an, ob die Queue einen Namen hat oder nicht.
Hat sie einen Namen, dann wird beim Neustart keine neue Queue geöffnet, die alte wird weiter benutzt. Zusätzliches Memory wird nicht verbraucht.

Hat sie keinen Namen, dann wird bei jedem Start eine neue Queue erstellt, es wird immer mehr Memory gebraucht.

Man kann das alles selbst testen, indem man den Windowas Task Manager /Performance aufruft.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.03.2013, 10:15
Beitrag #5

Hasenfuss Offline
LVF-Stammgast
***


Beiträge: 331
Registriert seit: Dec 2012

2012
2012
DE



RE: Frage zu Melder/Queues freigeben
Vielen Dank für Eure Antworten.
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
  Automatisierung mittels QMH und Melder ar7ur8 22 8.608 13.01.2022 13:55
Letzter Beitrag: TpunktN
  Probleme mit Queues und Programmaufbau stefan1312 6 4.366 30.10.2018 17:08
Letzter Beitrag: NoWay
  Drei Queues in einer While-Schleife mit case-Struktur EinVolvic 12 10.923 17.05.2017 20:25
Letzter Beitrag: EinVolvic
  Fehler Melder wladimir s 7 6.703 14.05.2016 15:24
Letzter Beitrag: BNT
  Speicher von genutztem Array freigeben moTo 3 3.861 11.05.2016 10:07
Letzter Beitrag: rolfk
  2D Arrays per Queues abfragen Jan S. 3 3.343 16.01.2016 08:56
Letzter Beitrag: Lucki

Gehe zu: