
Motivation
Im VM Container enthält jede Benutzersitzung ihre eigene Java-VM und damit ihren eigenen lokalen Java-Heap (vgl. Ressourcenverwaltung im VM Container). Daher müssen Datenstrukturen oft vielfach erzeugt und repliziert werden. (Klassische Java-Applikationsserver, die nur mit einer VM arbeiten, haben dieses Problem nicht.)
Ein typisches Beispiel ist eine große XML-Konfigurationsdatei, die beim Startup der Anwendung geparst werden muss.
Aus diesem Grund ist es wünschenswert, die Datenstrukturen, die von vielen Benutzersitzungen benötigt werden, nur einmal zu erzeugen und dann gemeinsam zu benutzen.
Anwendungsbereich
Dieses Vorgehen verbindet die Robustheit und Isolation der Benutzersitzungen des VM Containers mit der optimaler Ressourcennutzung und Performance. Allerdings unterscheidet sich das Programmiermodell von den üblichen Java-Techniken (Serialisierung), sodass die Verwendung nur für die VMC-Middleware vorgesehen ist.
Realisierung
Im VM Container gibt es folgende Mechanismen, um VM-übergreifendes Sharing zu ermöglichen.
Es gibt Shared Classloader, die Java-Klassen ins Shared Memory laden.
Shared Closures sind Instanzen von Shared Classes. Diese Java-Objekte liegen im Shared Memory und können von allen VMs der Instanz verwendet werden. Es gibt mappable und copy-only Shared Closures.
Shared Locks dienen zur Synchronistation von VMs auf Instanzebene. Der Zugriff auf gemeinsame Objekte kann so geregelt werden.
Administration
In der VMC Systemadministration (Transaktion SM53) können Sie die aktiven Objekte anzeigen und verwalten.