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 

"Nicht genügend Speicher zum Abschließen dieser Operation"



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!

16.11.2007, 11:58
Beitrag #1

Excalibour Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 52
Registriert seit: Apr 2007

7.1
2007
kA


Deutschland
"Nicht genügend Speicher zum Abschließen dieser Operation"
Hallo Leute!
Ich bekomme die oben stehende Fehlermeldung. Mein Arbeitsspeicher ist 2GB und sollte eigentlich nicht solche Fehlermeldungen verursachen...
Die Fehlermeldung tritt auf, wenn ich ein Array mit 2x7200 Zellen an ein Array mit 6x7200 Zellen anhängen will. Jetzt würde ich gern wissen, kann ich LabVIEW mehr Arbeitsspeicher bereitstellen? Oder muss ich die Genaugikeit der Zellenwerte reduzieren? Gib es weitere Tricks oder hat jemand ein ähnliches Problem schon mal gehabt?

Danke für Ideen und Tipps!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
16.11.2007, 12:25
Beitrag #2

Excalibour Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 52
Registriert seit: Apr 2007

7.1
2007
kA


Deutschland
"Nicht genügend Speicher zum Abschließen dieser Operation"
Hab den Fehler gefunden. Das eine Array hatte 7200 Zeilen, das andere 7200 Spalten... Ein Transformation war nötig und das Problem war verschwunden...
Gruß,
Excalibour
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.11.2007, 12:33
Beitrag #3

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
"Nicht genügend Speicher zum Abschließen dieser Operation"
Jetzt habe ich extra mein altes 7.0 angeschmissen, um dich auf den Fehler hinzuweisen, den du jetzt selber entdeckt hast.

MfG, 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
09.10.2010, 18:31
Beitrag #4

eMKay Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Jul 2010

8.6 Student
2009
de


Deutschland
"Nicht genügend Speicher zum Abschließen dieser Operation"
Meine VI spuckt auch diese Fehlermeldung aus.
Ich habe mal Screenshots von den Meldungnen und dem offensichtlichen Übeltäter hochgeladen.

Wie man sehen kann ist noch mehr als genug Arbeitsspeicher vorhanden.
Er macht jedesmal bei der Funktion "write to spreadsheet file" Probleme. Wenn ich 1 Millionen Zeilen schreiben will macht er es ohne
Probleme - er schreibt auch Problemlos 8 Spalten mit jeweils 1 Millionen Zeilen.
Aber wen ich nur eine Spalte mit 2 Millionen Zeilen schreiben will kommt diese Fehlermeldung.
Also an der Datenmenge kann es nicht liegen oder? Weil 8 Spalten a 1 Millionen Zeilen ist deutlich mehr als eine Spalte mit 2 Millionen Zeilen.


Ich hatte mal irgendwo gelesen, dass Labview selbst seinen Speicher begrenzt und man den irgendwo einfach erhöhen kann, stimmt das?
Oder wie könnte ich das Problem sonst lösen?

Wenn noch Fragen sind was die Vi sonst macht, sagt bescheid.

Im Prinzip habe ich einfach nur ein 2d Array mit max. 8 Spalten und halt jeweils ein paar Millionen Zeilen (max. 4 Millionen Zeilen pro Spalte) und muss das in eine Tabellendatei (csv) Speichern. Dabei bricht das Programm mit den geposteten Fehlermeldungen ab.


Angehängte Datei(en) Thumbnail(s)
           
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.10.2010, 18:39
Beitrag #5

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
"Nicht genügend Speicher zum Abschließen dieser Operation"
Hallo,

wieso es im einen Fall geht und im anderen nicht, kann ich dir nicht sagen. Das Problem bei großen Datenmengen mit "Write to Spreadsheet" ist, dass dieses VI einen einzigen, riesigen String erzeugt und diesen auf einmal in eine Datei schreiben möchte, soweit ich weiß.

Du könntest versuchen, das Schreiben selbst zu übernehmen, indem du die Arrays manuell durchläufst und zeilenweise in eine Datei schreibst.
Dann entstehen nur kurze Strings und du kannst theoretisch so lange schreiben, bis das Betriebssystem es nicht mehr zulässt.

Einen Versuch ist es wert.

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

chrissyPu Offline
LVF-Stammgast
***


Beiträge: 467
Registriert seit: Jun 2006

2014 PDS
2006
DE_EN

64283
Deutschland
"Nicht genügend Speicher zum Abschließen dieser Operation"
Hi,

könnte es am Append to file liegen? Wenn das Ding in einer Schleife liegt, schreibst du mehrmals - und LV öffnet immer die Datei, hängt an und schreibt wieder. Sprich es braucht Speicher von der anzuhängenden Menge plus der Menge von Daten, die schon im VI sind.

Was du versuchen könntest wäre, nicht das Top-Level-VI zu verwenden, sondern außerhalb der Schleife die Datei zu öffnen und dann innerhalb der Schleife nur auf die Referenz zu schreiben. Das ist glaube ich die einzige Möglichkeit, auch bei Binär- und TDMS-Dateien (und zusätzlich auch schneller...)

Grüße,

ch
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.10.2010, 12:35
Beitrag #7

eMKay Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Jul 2010

8.6 Student
2009
de


Deutschland
"Nicht genügend Speicher zum Abschließen dieser Operation"
' schrieb:Hallo,

wieso es im einen Fall geht und im anderen nicht, kann ich dir nicht sagen. Das Problem bei großen Datenmengen mit "Write to Spreadsheet" ist, dass dieses VI einen einzigen, riesigen String erzeugt und diesen auf einmal in eine Datei schreiben möchte, soweit ich weiß.

Du könntest versuchen, das Schreiben selbst zu übernehmen, indem du die Arrays manuell durchläufst und zeilenweise in eine Datei schreibst.
Dann entstehen nur kurze Strings und du kannst theoretisch so lange schreiben, bis das Betriebssystem es nicht mehr zulässt.

Einen Versuch ist es wert.


Es scheint eindeutig an der Zeilenanzahl zu liegen. Ich hatte auch mal testweise alle anderen Prozesse, die gleichzeitig noch geschehen deaktiviert - die machen keinen Unterschied. Es ist wirklich einzig und allein die Zeilenanzahl. Was du sagst leuchtet mir deshalb ein. Wenn da wirklich ein einziger String erstellt wird kann es natürlich sein, dass dieser einfach zu groß ist um noch geschrieben zu werden. Da ich ja weiß, dass 1 Millionen Zeilen kein Problem sind werde ich das glaub ich einfach mal in so 1 Millionen Zeilen Pakete zerlegen und schauen ob es dann klappt.
Bin schon auf der Arbeit, ob es geklappt hat sehen wir in so ca. einer StundeWink


' schrieb:Hi,

könnte es am Append to file liegen? Wenn das Ding in einer Schleife liegt, schreibst du mehrmals - und LV öffnet immer die Datei, hängt an und schreibt wieder. Sprich es braucht Speicher von der anzuhängenden Menge plus der Menge von Daten, die schon im VI sind.

Was du versuchen könntest wäre, nicht das Top-Level-VI zu verwenden, sondern außerhalb der Schleife die Datei zu öffnen und dann innerhalb der Schleife nur auf die Referenz zu schreiben. Das ist glaube ich die einzige Möglichkeit, auch bei Binär- und TDMS-Dateien (und zusätzlich auch schneller...)

Grüße,

ch


Das schreiben in die Datei ist nicht in einer Schleife. Ok strenggenommen schon, da es innerhalb eines Zustandsautomaten (innerhalb eine slave Schleife) ist, aber es wird definitiv nur einmal ausgeführt.
Es wird einmal eine Datei erzeugt, da wird dann der Header geschrieben (eine Zeile, 9 Spalten) also eine 1kb .csv Datei. Ich schließe die Datei danach nicht wieder sondern lasse sie offen das ist richtig. Das werde ich mal ändern und schauen ob das vielleicht die Lösung ist. Ich kann es mir aber nicht vorstellen, da mein Schreibvorgang wie gesagt nicht in einer Schleife ist sondern er die Datei nur ein einziges mal wieder öffnet nachdem der Header geschrieben ist und dann eben diese x Millionen Zeilen reinschreibt (auf einmal und nur einmal).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.10.2010, 12:53
Beitrag #8

Matze Offline
LVF-Team
LVF-Team

Beiträge: 1.027
Registriert seit: Apr 2010

20xx
2010
DE_EN

7xxxx
Deutschland
"Nicht genügend Speicher zum Abschließen dieser Operation"
Wäre es möglich, dass du uns ein kleines Demoprojekt bastelst, mit dem wir das reproduzieren können?
Also ein ähnlicher Programmaufbau mit einer Schleife, die die Werte generiert (Zufallswerte) und dann das Konstrukt, mit dem du die Datei erstellst.

Wenn es geht, lade das bitte für LV 8.5 hoch oder mach einen Screenshot vom gesamten Blockdiagramm.
Dann ist es leichter für uns, das nachzuvollziehen. Du hast oben so viel eingeschwärzt.

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.10.2010, 13:47
Beitrag #9

eMKay Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Jul 2010

8.6 Student
2009
de


Deutschland
"Nicht genügend Speicher zum Abschließen dieser Operation"
' schrieb:Wäre es möglich, dass du uns ein kleines Demoprojekt bastelst, mit dem wir das reproduzieren können?
Also ein ähnlicher Programmaufbau mit einer Schleife, die die Werte generiert (Zufallswerte) und dann das Konstrukt, mit dem du die Datei erstellst.

Wenn es geht, lade das bitte für LV 8.5 hoch oder mach einen Screenshot vom gesamten Blockdiagramm.
Dann ist es leichter für uns, das nachzuvollziehen. Du hast oben so viel eingeschwärzt.


Puh nur sehr schwer. Das ganze ist eine Messgeräteansteuerungsoftware. Ich befürchte, wenn ich Dummydaten mit 1 Millionen Zeilen Arrays erzeuge, ich den Arbeitsspeicher schon so auslaste, dass man das nicht wirklich reproduzieren kann.

Bevor ich anfange zu Speichern ist mein Arbeitsspeicher nämlich fast gar nicht ausgelastet, die Auslastung geht erst beim abspeichern hoch.



Ich habe übrigends beide Vorschläge ausprobiert und hatte keinen Erfolg. Ich schließe die datei jetzt nachdem ich den Header geschrieben habe, es hat aber keinen Einfluss.

Dann habe ich eine Abfrage eingebaut ob die Zeilenanzahl 1 Millionen überschreitet. Wenn ja teilt er die Zeilenanzahl durch 1 Millionen, das Ergebnis ist das n meine Forschleife. In der Schleife nehme ich ein Teilarray mit der länge=Zeilenanzahl und dem Index schleifeniteration x 1 Millionen. Das Teilarray speichert er dann innerhalb der forschleife wie gehabt ab.
Das heißt bei der ersten Iteration speichert er 0 bis 1 Millionen-1 Zeilen ab. In der zweiten Iteration 1 Millionen bis 2 millionen-1 ab etc.

Das funktioniert auch (habe es erstmal mit kleineren Zeilenzahlen ausprobiert), aber er gibt trotzdem die selbe Fehlermeldung aus.
Ich verstehe das nicht Huh
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.10.2010, 14:10
Beitrag #10

eMKay Offline
LVF-Grünschnabel
*


Beiträge: 33
Registriert seit: Jul 2010

8.6 Student
2009
de


Deutschland
"Nicht genügend Speicher zum Abschließen dieser Operation"
Oooook.

Ich habe grade noch mal die Zeichnung des Graphs deaktiviert nachdem ich die Änderungen an der Speicherung durchgeführt hatte und siehe da es funktioniert.
Jetzt habe ich die Speicherung und die Erstellung des Graphs einfach in eine Sequenz gepackt, so speichert er erst das File (das ist wichtiger) und erstellt danach den Graph. Bei 2 Millionen Zeilen in einer Spalte hat es gut geklappt.

Weil ich mich grad glücklich fühle lasse ich grade den absoluten Stresstest laufen für mein Programm: 8 Spalten a 4 Millionen Zeilen. Das dauert allerdings eine Weile (das Messgerät überträgt in Modemgeschwindigkeit Rolleyes ).

Wenn das auch klappen sollte bin ich soweit glücklich.


Um auch dem Thread eine Problemlösung zu präsentieren: Der erste Teil der Lösung war definitiv, dass die "write to spreadsheet file" Funktion versucht hat einen einzigen riesigen String zu erstellen und konnte den dann nicht mehr abspeichern. Nachdem das (wie oben beschrieben) gelöst wurde denke ich, dass das Programm versucht hat wärend es noch abgespeichert hat, den Graph zu zeichnen.


Vielen Dank für die Hilfe.
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
  Nicht genügend Quoten? THL 7 5.516 26.11.2013 12:50
Letzter Beitrag: jg
  Ehemalige Typdefinitionen von dieser trennen Matze 4 5.247 21.11.2013 13:14
Letzter Beitrag: Matze
  Arbeitsspeicher ist voll Meldung, obwohl noch genügend da ist YYYs 4 5.463 09.04.2013 08:59
Letzter Beitrag: YYYs
  Messkurven aus TDMS auslesen - Nicht genügend Speicher zum Abschließen der Operation jeannyLab 9 9.036 20.11.2011 23:20
Letzter Beitrag: schrotti
  Speicher wird nach durchlaufen von SubVI nicht freigegeben M Nussbaumer 6 5.219 18.09.2009 13:02
Letzter Beitrag: M Nussbaumer
  Variable von einer Operation "latch, wenn losgelassen" erstellbar? ezekiel 3 4.499 02.07.2008 12:37
Letzter Beitrag: Y-P

Gehe zu: