Lade...
 

CX_OBJECT_MANAGER::FreeVirtualMemory (ab Dll-Version: 4.5.2.166275)

CX_OBJECT_MANAGER::FreeVirtualMemory (ab Dll-Version: 4.5.2.166275)

Beschreibung:

In einer Transaktion allokiert ObjectStore Hilfsobjekte für die Reallocation der Adressen, die am Ende der Transaktion wieder verschwinden.

Bei einer Verarbeitung mit sehr vielen Objekten in einer langen Transaktion erreichen wir Größenordnungen von 10 × 106, 100 × 106 Hilfsobjekten und kommen oft zum Abbruch wegen einer
out of virtual memory Exception.
FreeVirtualMemory startet eine neue ObjectStore Transaktion dann (und nur dann), wenn der allokierte Speicher den als Parameter übergebenen Maximalwert überschreitet.

 

1. Vorsicht: in einer schreibenden Transaktion verliert man die Kontrolle, wann in die Datenbank zurückgeschrieben wird.

2. Nur einsetzen, wenn durch die Basis-Entwickler geklärt ist, dass in der Verarbeitung kein Memory-Leak im ClassiX®-System die Ursache der out

of virtual memory Exception ist.

Code-Beispiel:
// eine Auswertung über sehr viele Objekte

iterate(UNSAFE)

{

  40 /* in MB */ GetManager(OBJECT) Call(FreeVirtualMemory)

  .  .  .

  // immer weiter rekursiv hinabsteigen, noch mehr Objekte "anfassen"

  iterate(UNSAFE)

  {

     . . .

     // und immer noch mehr

     iterate(UNSAFE)

     {

       . . .

     }

  }

}

 

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top INTEGER Memory in MB (empfohlener Wert ist 40 MB)
Stack(Out) Top    
Funktionsaufruf: Call(FreeVirtualMemory)

Verwandtes Thema: CXI_WINDOW_OBJECT::SetMaxMemoryUsage