2014-02-11 94 views
0

我想知道當我們運行java程序(jar)內存分配,堆空間等的多個實例時情況如何。它是否像創建一個類的多個對象?如果我們想要在操作過程中擁有共同的可訪問內存(可以訪問同一個jar的實例),那麼最好的方法是什麼? (像靜態變量 - 共同記憶所有實例)如何在linux服務器上運行jar的多個實例?

回答

3

對於java -cp libname.jar <class>java -jar libname.jar Linux服務器的多個實例只是不共享(隱含的)任何事情,從另外一個很好的保護另一個進程。因此,通常運行多個相同類型的應用程序(每個都在自己的JVM中)就像運行文本編輯器的多個實例。因爲如果您的應用程序打開端口,寫入文件並執行其他可能不可共享的事情,則可能需要執行特殊步驟(如分配每個實例不同端口以偵聽或實現文件鎖定)。

如果您的問題是關於將兩個jar文件加載到單個JVM實例中,那麼答案會在多個(可能與分層相關)classloaders的範圍內,結果高度取決於所使用的類加載器的拓撲。

相關問題