我正在从主应用程序执行另一个 JVM (java.exe)。有什么方法可以与新创建的进程(在创建时或创建后)共享一个对象(相当大的对象)。
someObject sO= new someObject();
//sO is populated
//Creating new process
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("java -cp " + tempDir + jarsInPath + " " + appMain);
现在我希望 sO 对象可用于 proc 对象表示的进程
ProcessBuilder 是否为此目的提供任何实用程序?
最佳答案
如果要共享对象,最好的方法是使用线程而不是单独的进程。进程不能共享内存(通过 JNI 除外),因此您必须通过文件或通过 RMI 套接字连接以序列化形式来回复制大对象(后者是更好的选择,因为它会导致固有同步) .
关于java - 跨 Java 进程共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1437438/