Gemeinsame Nutzung von Objekten in Java-Prozessen

8

Ich führe eine andere JVM (java.exe) aus der Hauptanwendung aus. Gibt es eine Möglichkeit, ein Objekt (ziemlich großes Objekt) mit dem neu erstellten Prozess (zum Zeitpunkt der Erstellung oder nach der Erstellung) zu teilen.

%Vor%

Nun möchte ich, dass das SO-Objekt für den Prozess verfügbar ist, der durch das proc-Objekt

bezeichnet wird

Stellt ProcessBuilder zu diesem Zweck irgendwelche Dienstprogramme zur Verfügung?

    
user174819 17.09.2009, 08:20
quelle

4 Antworten

3

Wenn Sie Objekte gemeinsam nutzen möchten, verwenden Sie am besten Threads anstelle eines separaten Prozesses. Prozesse können Speicher nicht gemeinsam nutzen (außer über JNI), so dass Sie das große Objekt in serialisierter Form entweder über Dateien oder über eine RMI-Socket-Verbindung hin und her kopieren müssen (wobei letzteres die bessere Option ist, da es zu einer inhärenten Synchronisation führt). .

    
Michael Borgwardt 17.09.2009 08:32
quelle
1

Sie können einen Service verfügbar machen, um den Zugriff auf die Daten des Objekts zu ermöglichen. Es ist vergleichsweise einfach, die Kommunikation zwischen Prozessen mithilfe von RMI einzurichten. Es wird einen IPC-Overhead geben, so dass dies nicht so performant wie lokaler Zugriff ist, feinkörniger Zugriff wird teuer, aber wenn Sie eine Zusammenfassung oder andere aggregierte Daten erhalten, dann könnte dies ein anständiges Modell sein.

Sie sagen nicht, warum dies getrennte Prozesse sind. Haben Sie die Möglichkeit, den Code Ihres Kindprozesses direkt in den übergeordneten Prozess zu laden? Dynamisches Be- und Entladen ist möglich.

    
djna 17.09.2009 08:32
quelle
0

Nein, es gibt keine gemeinsame Speicherunterstützung in Java.

Am einfachsten wäre es, das Objekt in eine temporäre Datei zu serialisieren und dann in der neuen JVM wieder zu deserialisieren.

    
Gregory Mostizky 17.09.2009 08:27
quelle
0

Ich denke, dass Sie zu diesem Zweck verteilte Caches verwenden können (EHCache, memcached usw.)

    
Alexey Sviridov 17.09.2009 10:12
quelle

Tags und Links