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 

"Initialize Array" allokiert Speicher 4-fach (Labview 2009 Win XP 32Bit)



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!

05.03.2012, 16:34
Beitrag #1

tinger Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: May 2010

2009
2010
de


Deutschland
"Initialize Array" allokiert Speicher 4-fach (Labview 2009 Win XP 32Bit)
Hallo zusammen,

wir haben ein sehr seltsames Problem (ich würde fast sagen einen Bug).

Vorgeschichte zum Kontext, spielt für das Problem eigentlich keine Rolle:
Wir möchten aus einer A/D Karte möglichst den kompletten Puffer (256MB) in ein Array schreiben. Dafür wird dieses mit 128*10^6 16Bit Integern mit der Funktion "Initialize Array" initialisiert (16Bit Integer kommen auch aus der Karte). Einen zusammenhängenden Speicherbereich für 256MB haben wir, aber keine 4...

Problem:
Betriebssytem: Windows XP 32 Bit
Labview-Version: 2009 32 Bit Lv09_img2
Labview allokiert den Speicher für das Array leider 4 mal und gibt diesen auch nach dem ausführen des Programms nur 1 mal wieder frei. Da das in dem eigentlich verwendeten Programm sehr unübersichtlich ist, haben wir versucht das ganze in klein nachzustellen (dazu das hochgeladene mini-VI). Auch hier wird der Speicher 4 mal belegt und nur ein mal wieder freigegeben. Den Speicher überwacht haben wir mit VMMap (http://vmmap.softonic.de/), man sieht es aber auch im Taskmanager.
Ist das ein bekanntes Problem? Gibts dafür einen Patch oder Workaround? Wir haben danach gesucht aber nichts gefunden.

Bin dankbar für jede Hilfe und hoffe ich hab mich an alle Regeln gehalten Wink !

Christian


Angehängte Datei(en)
9.0 .vi  array_init_test.vi (Größe: 6,3 KB / Downloads: 88)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
05.03.2012, 17:08
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.451
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: "Initialize Array" allokiert Speicher 4-fach (Labview 2009 Win XP 32Bit)
So große Arrays nach Möglichkeit NICHT als Indikator auf dem FP anzeigen. FP-Controls sind üblicherweise immer eine Speicherkopie. Damit wären wir schon bei 2 Speicherallozierungen.
Über die anderen beiden kann ich nur spekulieren, vielleicht irgendwelche "Rückgängig"-Operationen in der Entwicklungsumgebung.

Hier ein VI ohne FP-Element, bei dem der Speicher nur 1x alloziert wird.

9.0 .vi  array_init_test2.vi (Größe: 6,83 KB / Downloads: 94)


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
05.03.2012, 17:43
Beitrag #3

tinger Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: May 2010

2009
2010
de


Deutschland
RE: "Initialize Array" allokiert Speicher 4-fach (Labview 2009 Win XP 32Bit)
Danke schon mal für Deine Antwort, ich schau mir dein Beispiel gleich an. Davor noch schnell eine Frage:
mit
(05.03.2012 17:08 )jg schrieb:  [...]
Über die anderen beiden kann ich nur spekulieren, vielleicht irgendwelche "Rückgängig"-Operationen in der Entwicklungsumgebung.
[...]
meinst du schon, das die zusätzlichen 2 bei Dir auch auftreten oder ist das ein Problem von "unserem" Labview?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2012, 17:47
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.451
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: "Initialize Array" allokiert Speicher 4-fach (Labview 2009 Win XP 32Bit)
Innerhalb der LV-Umgebung sind sie bei deinem Bsp aufgetreten. Interessant zu testen wäre, ob das auch innerhalb eine Exe passiert?

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
06.03.2012, 01:40
Beitrag #5

tinger Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: May 2010

2009
2010
de


Deutschland
RE: "Initialize Array" allokiert Speicher 4-fach (Labview 2009 Win XP 32Bit)
Danke nochmal, wir sind hier schon ein gutes Stück weiter gekommen.

Den "Indicator" konnten wir nur umgehen, indem wir ein Sub-VI aufgelöst und ins Toplevel-VI eingefügt haben. "Probes" scheinen ebenso wie "Indicator" eine Kopie zu erzeugen (aus meiner Sicht nicht gerade sinnvoll). Außerdem haben wir mit einem "Reshape" wohl noch eine Kopie erzeugt (ist denke ich in anderen Programmiersprachen auch anders).

Damit können wir eigentlich schon leben. Hab noch nie aus Labview eine exe erstellt, schau ich mir evtl. in den nächsten Tagen mal an.

Grüße
Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.03.2012, 08:25
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 16.204
Registriert seit: May 2009

09SP1, 11SP1, 17 (selten 19)
1995
DE_EN

10×××
Deutschland
RE: "Initialize Array" allokiert Speicher 4-fach (Labview 2009 Win XP 32Bit)
Hallo tinger,

Zitat:Den "Indicator" konnten wir nur umgehen, indem wir ein Sub-VI aufgelöst und ins Toplevel-VI eingefügt haben.
Wenn ihr das subVI auf Priorität "Unterprogramm" setzt, benutzt das subVI den "Speicherkontext" des aufrufenden VI und legt keine zusätzlichen Kopien für Indicator (wie sonst üblich) an.

Zitat:"Probes" scheinen ebenso wie "Indicator" eine Kopie zu erzeugen (aus meiner Sicht nicht gerade sinnvoll).
Probes sind auch nur Indicators (quasi)...

Zitat:Außerdem haben wir mit einem "Reshape" wohl noch eine Kopie erzeugt
Das ist üblicherweise nicht so, aber der LV-Memorymanager wird schon wissen, warum.
Hier vielleicht: Ihr gebt sowohl das Ursprungsarray als auch das "reshaped" Array über einen ConnectorPane-Anschluß weiter. Also muss für beide Arrays ein eigener Speicherbereich vorgehalten werden...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.03.2012, 11:44 (Dieser Beitrag wurde zuletzt bearbeitet: 06.03.2012 11:47 von tinger.)
Beitrag #7

tinger Offline
LVF-Grünschnabel
*


Beiträge: 22
Registriert seit: May 2010

2009
2010
de


Deutschland
RE: "Initialize Array" allokiert Speicher 4-fach (Labview 2009 Win XP 32Bit)

Akzeptierte Lösung

Hallo zusammen,

Danke nochmal für Eure Hinweise!

Das mit dem Sub-VI ist für die Zukunft interessant (in dem Projekt störts uns so jetzt auch nicht und bleibt deshalb so Wink).
Den "Reshape" haben wir auch rausgenommen. Damit lief das Programm fast mit dem kompletten Kartenpuffer, also schon annehmbar für uns.

Dann haben wir das Projekt doch in eine exe gepackt und seit dem funktioniert es komplett!

Danke!

Christian


ich zitiere mal die beiden Lösungen um sie gemeinsam als Lösung zu markieren:

(05.03.2012 17:08 )jg schrieb:  So große Arrays nach Möglichkeit NICHT als Indikator auf dem FP anzeigen. FP-Controls sind üblicherweise immer eine Speicherkopie. Damit wären wir schon bei 2 Speicherallozierungen.
Über die anderen beiden kann ich nur spekulieren, vielleicht irgendwelche "Rückgängig"-Operationen in der Entwicklungsumgebung.

Hier ein VI ohne FP-Element, bei dem der Speicher nur 1x alloziert wird.


Gruß, Jens

(05.03.2012 17:47 )jg schrieb:  Innerhalb der LV-Umgebung sind sie bei deinem Bsp aufgetreten. Interessant zu testen wäre, ob das auch innerhalb eine Exe passiert?

Gruß, Jens
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
  Verfügbaren Speicher von LabVIEW ermitteln th13 1 947 29.03.2018 14:12
Letzter Beitrag: GerdW
  Speicher von genutztem Array freigeben moTo 3 1.785 11.05.2016 10:07
Letzter Beitrag: rolfk
  LPT1 - Port bei Windows7 32bit und LV2011 benchM 6 3.095 12.05.2014 11:25
Letzter Beitrag: Kiesch
  Speicher läuft in Statemachine voll (großes Array...) Peter04 5 4.822 30.11.2013 22:42
Letzter Beitrag: D_Sev
  Problem mit Datenerfassung unter Win7 64bit mit LV11 32bit MädMäxxx 6 2.861 07.03.2013 20:56
Letzter Beitrag: MädMäxxx
  Virtuellen Speicher für LabVIEW vergrössern M Nussbaumer 4 2.303 17.07.2012 08:49
Letzter Beitrag: M Nussbaumer

Gehe zu: