2011-07-20 57 views
2

想象一個5 MB的jar文件,其中包含許多「主」類,每個類都以其自己的進程啓動,類似於java -cp my_fat_deployment.jar net.example.MyMain15。一些進程持續運行幾天,其他進程持續幾分鐘或幾秒鐘。一次可以有5到20個啓動和運行。來自一個罐子的多個java進程

我想比較執行它的方法有兩種:

  1. 啓動每個進程關閉完全相同的文件:從副本

    java -cp my_fat_deployment.jar net.example.MyMain15

  2. 啓動:

    cp my_fat_deployment.jar my_copy_15.jar

    java -cp my_copy_15.jar net.example.MyMain15

我談論的Java從太陽在Linux中,如果它很重要。

每種方法有哪些優缺點?第一個人是否有任何穩定或安全問題?哪個更快,爲什麼?

回答

4

第一個更快,因爲您避免複製文件。除此之外,它們完全一樣。

+0

Java不知道如何在進程之間緩存/重用jar內容? –

2

兩種方式都是相同的。它們之間沒有任何區別,除了使副本佔用更多的磁盤空間之外。

當然,如果您稍後想要獨立升級每個進程,則需要使用單獨的JAR。

2

除非你刪除,並與不同的內容生成.jar file的java excection後各時間,你應該第一個

第二步走的是多餘的,因爲罐子名稱並不重要。

0

有在一個大罐子多個發射點,最簡單的方法,是讓每一個發射點額外的罐子其中只包含與

  1. A類路徑指向大罐子清單
  2. 指向啓動類的主類。

(加上你需要記錄的東西)。

然後你可以只是做

從而節省您的-cp東西。