08.07.2007, 11:41
Beitrag #1
|
|
|
08.07.2007, 12:05
Beitrag #2
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Probleme mit Arbeitsspeicher!
Hallo,
also, die Stelle, an der du deinen Speicherbedarf dauernd erhöhst, ist hier:
Da du alle Messwerte kontinuierlich im Speicher hältst (und das auch noch als 2-D-String-Array), muss der Speicherbedarf ja immer weiter ansteigen und somit natürlich irgendwann mal gegen eine Grenze laufen.
Übrigens, die Insert Into Array und die Build-Array-Funktionen allozieren außerdem bei jeder Operation neuen Speicher.
Rückfrage also: musst du alle Daten wirklich im Speicher halten? Wenn ja, dann hast du ein Problem! Wenn nein, dann brauchst du einen Ringpuffer.
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.
|
|
|
08.07.2007, 12:12
Beitrag #3
|
Marco_81
LVF-Grünschnabel
Beiträge: 24
Registriert seit: Sep 2006
8.00
2006
kA
Deutschland
|
Probleme mit Arbeitsspeicher!
Hallo Jens,
ich kann dir nicht genau sagen ob ich alle Daten im Speicher halten muss. Aber sie müssen kontinuierlich angezeigt und protokolliert werden.
Was ist denn ein Ringpuffer, oder wie kann ich es denn besser realisieren?
|
|
|
08.07.2007, 12:34
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Probleme mit Arbeitsspeicher!
Hallo,
zum Thema Ringpuffer oder auch Ringspeicher, such mal im Forum nach Beiträgen von "i2dx" und dem Stichwort Ringspeicher.
Es ist ein Array-Speicherbereich, in dem du halt immer wieder neue Daten reinschreibst, dabei aber alte überschreibst (sozusagen eine FIFO-Puffer).
Ach ja, und die weiteren Build-Array-Aufrufe (bei den 1D-Numeric-Arrays), die du verwendest, sorgen natürlich auch für dauernd ansteigenden Speicherbedarf.
Wie gesagt, musst du wirklich alle Daten anzeigen? Gibt es eine Obergrenze, wie lang der Test läuft? Gibt es eine Obergrenze von Daten, die angezeigt werden müssen (z.B. die letzten 4 Wochen o.ä.)? Dann könntest du mit vorher initialisierten Arrays arbeiten, und dein Speicher steigt dann nicht dauernd an.
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.
|
|
|
08.07.2007, 13:11
(Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2007 13:12 von Marco_81.)
Beitrag #5
|
Marco_81
LVF-Grünschnabel
Beiträge: 24
Registriert seit: Sep 2006
8.00
2006
kA
Deutschland
|
Probleme mit Arbeitsspeicher!
Ich muss max. die letzten 24 Stunden anzeigen. Aber die Protokollierung muss durchgängig erfolgen (ca. 4-6 Wochen).
MfG Marco
|
|
|
08.07.2007, 13:29
Beitrag #6
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Probleme mit Arbeitsspeicher!
' schrieb:Ich muss max. die letzten 24 Stunden anzeigen. Aber die Protokollierung muss durchgängig erfolgen (ca. 4-6 Wochen).
MfG Marco
Hallo, Marco,
damit hast du also die Lösung deines Speicherproblems: Deine 1D-Arrays müssen maximal 1440 Elemente (60x24) groß sein. Diese Array-Größe kannst du vor deiner While-Schleife per "Initialize Array" festlegen. Dann den Ringspeicher einbauen.
Und das Abspeichern der Daten musst du natürlich inkremental erledigen und nicht wie jetzt, immer alles innerhalb eines Aufrufes in einen HTML-Report speichern.
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.
|
|
|
08.07.2007, 14:26
Beitrag #7
|
Marco_81
LVF-Grünschnabel
Beiträge: 24
Registriert seit: Sep 2006
8.00
2006
kA
Deutschland
|
Probleme mit Arbeitsspeicher!
Wäre es möglich das du mir das an einem array als bsp. mal zeigst? Mit inkremental abspeichern meinst du jeden neuen Messwert (und nicht das ganze array zum Report) hinzufügen?
|
|
|
08.07.2007, 17:18
Beitrag #8
|
Marco_81
LVF-Grünschnabel
Beiträge: 24
Registriert seit: Sep 2006
8.00
2006
kA
Deutschland
|
Probleme mit Arbeitsspeicher!
Es lag an der Protokollierung. Die Arrays haben nicht weiter gestört. Erst wenn ich das Programm beende schreibe ich alle bis dahin angefallenen Messdaten in eine Datei (nicht wie vorher bei jedem Schleifendurchlauf)!
Vielen Dank für die Unterstützung
|
|
|
08.07.2007, 18:42
Beitrag #9
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Probleme mit Arbeitsspeicher!
' schrieb:Es lag an der Protokollierung. Die Arrays haben nicht weiter gestört. Erst wenn ich das Programm beende schreibe ich alle bis dahin angefallenen Messdaten in eine Datei (nicht wie vorher bei jedem Schleifendurchlauf)!
Aber den Speicheranstieg löst das trotzdem nicht. Aber ok, bei Messzeiten von 6 Wochen fallen grob überschlagen 60000 Datensätze an, das geht ja noch.
Aber jetzt mal ehrlich, bei der Messdauer willst du nicht zwischendrin mal die Daten wegspeichern??? Und wenn der Computer nach 5 1/2 Wochen zwecks Stromausfall o.ä. ausfällt? Oder aus sonstigen Gründen abschmiert? Dann sind die Daten weg.
Überleg dir das mal mit Zwischenspeichern, ist wirklich nicht schwer, ASCII-File öffnen, und in jedem Druchgang einfach die neuen Zahlen in einer neuen Zeile hinter dranhängen.
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.
|
|
|
| |