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 

Datenbanksätze aus Arbeitsspeicher entfernen



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!

09.08.2013, 08:30
Beitrag #1

Schü Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 68
Registriert seit: Sep 2010

2010 Student, 2010, 2012 SP1
2010
DE_EN

08427
Deutschland
Datenbanksätze aus Arbeitsspeicher entfernen
Hallo liebe LabView-Forumler,

ich bin aktuell ein kleines Zusatzprogram zu schreiben, mit dem Daten aus einer Datenbank gelesen und "gekürzt" werden. Das heißt der originale Tabelleninhalt wird hergenommen und es werden mehrere Tabellen mit einer Sortierung nach der Zeit für Daten in 1Minuten-, 15Minuten, 1Stunde-, ... bis zu 1Jahr-Abständen hineingeschrieben. Die Datenbankabfrage und das Sortieren, sowie das erstellen einer neuen Tabelle + hineinschreiben ist überhaupt kein Problem.

Mein Problem liegt allerdings wieder einmal in der Arbeitsspeicherverwaltung. Gleich vornweg, nein ich habe kein Problem damit, dass der Arbeitsspeicher volläuft. Hier habe ich dafür gesorgt, dass geöffnete DB-Referenzen auch wieder geschlossen werden etc., soweit mir nichts entgangen ist. Und ich schreibe Arrays auch nur in Schieberegister, ohne dabei unendlich lange Arrays zu haben. Sollte euch dennoch so ein Fehler auffallen, sagt es mir bitte.
Wo ich den eigentlichen Fehler sehe ist, dass ich mittels der Datenbank-VIs von NI eine Tabelle auslese und dabei die Werte in den Arbeitsspeicher geschrieben werden. Wenn das VI dann durchgelaufen ist und beendet wird, bleiben die Daten allerdings im Arbeitsspeicher liegen. Am Ende des VIs benutze ich sogar die Funktion "Speicherfreigabe anfordern".

Liegt es vielleicht daran, dass die Schieberegister und die Verbindungen die Daten noch enthalten bzw. erhalten bleiben, wenn das VI beendet wird?

Ich habe schon verschiedenste Themen dazu gelesen und in vielen wurde ja immer darauf hingewiesen, woran es liegt, dass der Speicher vollläuft. Nur mein Speicher läuft ja nicht voll in dem Sinne, sondern er wird beim Laden von bspw. ca. 205000 Datensätzen mit jeweils 29 Werten - es resultiert also ein 205000x29-Array - einmalig mit ca. 2,8GB vollgepackt. Dadurch steigt die RAM-Auslastung von 2,5GB auf 5,3GB an und bleibt auch dabei, bis das VI beendet wird. Nur nach dem Ende bleiben die Daten wie gesagt im Arbeitsspeicher erhalten, was so nicht gedacht war.

Das ist für mich halt ein grundlegendes Problem, da auch Tabellen mit mehr Datensätzen sortiert werden sollen und je nach Bedarf eine Tabelle in mehreren Durchläufen abgearbeitet werden muss, da nicht alle Datensätze gleichzeitig in den Arbeitsspeicher (bzw. die max. 4GB möglichen) passen können.

Hier habe ich mal einen kurzen Ausschnitt aus meinem Blockdiagramm:
   

Zudem habe ich noch beide VIs - welche in LV2012 SP1 programmiert wurden:

0.0 .zip  DB_to_1min.zip (Größe: 46,94 KB / Downloads: 240)


Weitere Lösungsversuche:
(1)
In einem Thema wurde erklärt, dass jedes SubVI eine eigene Kopie anlegt. Dadurch, dass das Select Data-VI von NI ein SubVI ist, dachte ich, dass hier vielleicht der Fehler liegt. Also habe ich den Code heraus kopiert und direkt in mein Blockdiagramm eingefügt. Allerdings hat sich damit nichts geändert. Ist das VI beendet bleiben die Daten im Arbeitsspeicher enthalten.

(2)
Ich habe mal gelesen (glaube hier im Forum), dass man das VI mit einem asynchronen Aufruf öffnen soll und am Ende wieder auf die Standardwerte zurücksetzen soll. Das habe ich versucht, allerdings war das Ergebnis nicht von Erfolg gekrönt. Ich habe es allerdings erstmal dabei belassen - sollte das doch der richtige Weg sein, wäre schön, wenn ihr mir das sagen könnten.

Ich hoffe ich konnte euch alles so genau wie möglich beschreiben.

Beste Grüße vom Schü
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30
Antwort schreiben 


Nachrichten in diesem Thema
Datenbanksätze aus Arbeitsspeicher entfernen - Schü - 09.08.2013 08:30

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  HTML Tags entfernen ares2013 8 8.498 24.06.2021 11:01
Letzter Beitrag: ares2013
  OHNE VI: Arbeitsspeicher läuft voll ddrayss 8 6.446 12.10.2019 17:05
Letzter Beitrag: ddrayss
  aus LV komponenten entfernen... gottfried 3 4.230 10.01.2019 15:54
Letzter Beitrag: gottfried
  Wert aus 1-D Array entfernen Stephan235 2 3.844 16.03.2018 15:53
Letzter Beitrag: Stephan235
  Leerzeichen im String entfernen Hydrogencarbonat 3 7.336 22.06.2016 07:24
Letzter Beitrag: GerdW
  Arbeitsspeicher läuft voll Michael1984 10 10.762 04.03.2015 09:45
Letzter Beitrag: Y-P

Gehe zu: