Bibliotheken: Abbildungsdateien ohne DLL - Seite 2

 

Alex, wie gibst du den Speicher frei, wenn eine Datei nicht mehr benötigt wird?

Ich meine, damit ich nicht Megs und Gigs von RAM schaufeln muss, weil es vielleicht viele Dateien gibt.

 
Ist CloseHandle hilfreich?
 
sergeev:

CloseHandle hilft?

CloseHandle wird innerhalb von Close() aufgerufen, gibt aber keinen Speicher frei, und durch erneutes Öffnen (ohne Erstellen) können Sie die gespeicherten Informationen abrufen.

Dies bedeutet, dass RAM belegt ist.

void CMemMapFile::Close()
  {
   if(m_hmem!=NULL) CloseHandle(m_hmem); m_path=""; m_hmem=NULL; m_size=0; m_pos=0; m_mode=-1; // Schließen Sie den Griff
  }
 

Ich denke, es wäre besser, die Dateigröße auf 0 zu setzen, damit der Speicher garantiert freigegeben wird.

Es gibt auch Grows, um die Größe zu erhöhen, und Delete, um die Datei zu löschen, indem der zugewiesene Speicher auf Null gesetzt wird.

 

Ich danke Ihnen. Sehr notwendige Sache.

Und, vielleicht eine Frage, die nicht zum Thema gehört: Kann File Mapping so angepasst werden, dass es externe Genetik (z.B. ein Skript, das im Terminal läuft) anstelle der Standardgenetik bei der Optimierung verwendet?

 
joo:

Ich danke Ihnen. Sehr notwendige Sache.

Und, vielleicht eine Frage, die nicht zum Thema gehört: Kann File Mapping so angepasst werden, dass es externe Genetik (z.B. ein Skript, das im Terminal läuft) anstelle der Standardgenetik bei der Optimierung verwendet?


Wenn es nicht halbautomatisch ist, muss sowieso jemand den Tester starten und stoppen (wenn man Claud verwenden will).

Und ohne claude ist der Einsatz eines Testers sinnlos.

 
Urain:

CloseHandle wird innerhalb von Close() aufgerufen, aber es gibt den Speicher nicht frei, und durch erneutes Öffnen (ohne Erstellen) können Sie die gespeicherten Informationen abrufen.

Ich glaube, es bleibt dort, bis jemand es neu schreibt. Mir ist das schon passiert. Die schreibende Anwendung schließt das Handle und die lesende Anwendung nicht. Aber sie kann die Daten lesen. Aber nach einigen Operationen in Windows ändern sich die Daten in der Datei.

Das bedeutet, dass der RAM-Speicher voll ist.

Ich bin mir nicht sicher.
 

joo:

File Mapping kann wahrscheinlich so angepasst werden, dass bei der Optimierung eine externe Genetik (z. B. ein Skript, das im Terminal läuft) anstelle der Standardgenetik verwendet wird.

Wenn Sie Dateien zum Speichern von Zwischendaten verwenden, können Sie das natürlich tun. Die Hauptsache ist, dass Sie die Daten an bestimmten Referenzpunkten auf die Festplatte zurücksetzen, denn wenn etwas passiert, sind die Informationen unwiederbringlich verloren.
 
sergeev:

Ich glaube, es bleibt dort, bis es jemand neu schreibt. Das ist mir schon passiert. Die schreibende Anwendung schließt das Handle und die lesende Anwendung nicht. Aber sie kann die Daten lesen. Aber nach einigen Operationen in Windows ändern sich die Daten in der Datei.

Ich bin mir nicht sicher.
Ich schätze, wir müssen das auf eine garantierte Weise überprüfen. Aber ich weiß nicht, wie.
 
Urain:

Sofern es sich nicht um einen Halbautomaten handelt, muss jemand das Prüfgerät starten und stoppen (wenn Sie einen Claud verwenden wollen).

ZY und ohne claud macht es keinen Sinn, ein Prüfgerät ohne claud zu benutzen.

Ja, es gibt ein Problem mit claud....

Nun, ich meinte, dass der Benutzer das Skript auf dem Chart ausführt und dann die Optimierung im Tester startet (das Skript beginnt, die notwendigen Variablen durch File Mapping in den optimierten Expert Advisor zu "schieben"). Und wie, wann und unter welchen Bedingungen die Optimierung gestoppt wird, ist eine andere Frage (z.B. wenn der Expert Advisor das "ready"-Flag erhält und das Stuffing des Expert Advisors aufhört zu funktionieren, so dass der Tester die verbleibenden Läufe im Idle-Modus durchführt - also die verbleibenden Läufe schnell durchführt).

Das geht so.