<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Version 7.0.2: 2 GB Speicher, Windows 7
Ich habe eine for-Schleife (die vorerst zweimal wiederholt wird). Innerhalb der for-Schleife öffne ich eine Datenbankverbindung und frage eine zurückgegebene Tabelle ab. Die zurückgegebene Tabelle umfasst etwa 10 Spalten und 1,7 Millionen Zeilen. Ich speichere dann die Tabelle und schließe sie und gehe dann zur nächsten Tabelle. Das Problem ist, dass der Speicher nie aus der ersten Tabelle freigegeben wird. Wenn ich also die Datensätze aus der nächsten Schleifenabfrage abrufe, erhalte ich eine Speicherausnahme. Gibt es eine Möglichkeit, die Tabelle und ihren Speicher innerhalb der for-Schleife dauerhaft zu schließen? Danke Chris.
Bitte sehen Sie sich das folgende Code-Snippet an:
meine Liste = Wörter ( Munger ( p [ "Waffeln" ] , z , "," , " " )) ; // fügt Wafernummern in eine Liste ein
N = N Artikel ( meine Liste ) ; // zählt die Anzahl der Wafer in der Liste
zum ( ich = 1 , ich <= N , ich ++,
waf_id = meine Liste [ ich ] ;
waf_table = meine Liste [ ich ] ;
wenn ( Länge ( waf_id ) > 0 , waf_id = "('" || waf_id || "')" ) ;
ls_sql = "AUSWÄHLEN * " ;
ls_sql = ls_sql || " VON WDBP.dbo.SF_QST " ;
ls_sql = ls_sql || " WO WAFER_ID IN " || waf_id ;
Show ( ls_sql ) ; // zeigt die SQL-Anweisung im Protokoll an
Offene Datenbank ( "DSN=WDBP;UID=WDFREP;PWD=wdfrep;" , ls_sql , waf_table ) ; // fragt die Datenbank ab
dt = Datentabelle ( waf_table ) ;
Dateiname = waf_table||".jmp";
Show (Dateiname);
nah dran (dt, save(Dateiname));
) ;
OK. Das Problem wird gelöst, indem ein „wait(5)“-Befehl nach „close(dt, save(filename))“ am Ende der Schleife platziert wird. JMP hatte die Dateispeicherung noch nicht abgeschlossen, bevor das Skript zur weiteren Verarbeitung überging.
Ich habe das durch einige Tests und dummes Glück gefunden.