2011-06-01 38 views
4

我想問問這裏的任何人是否知道如何優化JVM的內存使用情況? 我們使用調用JVM的Java服務包裝器(YAJSW),物理內存使用量約爲40MB。我想減輕這個讓我們說5-10MB。我如何實現這一目標?如何優化JVM的內存使用情況?

到目前爲止,我只具有以下配置:

java =-Xmx1024m

我也試過這樣:

java =-Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:SurvivorRatio=2 -XX:PermSize=256m -XX:MaxPermSize=256m

但是這些配置設置並沒有區別的。什麼是這個正確的配置設置?或者,我還需要做些什麼來優化?

預先感謝您的回答。

+0

你提供的數字有點奇怪......你說你想把內存使用量減少到5-10 MB,並且你把它設置得更多(堆1G,PermSize 256M)。 – Grooveek 2011-06-01 08:08:29

+0

我真的不知道使用正確的參數。如果我減小堆大小,則由服務封裝的應用程序可能會受到影響。無論如何,你是否建議我減小堆大小和PermSize?這些可容忍的價值是什麼? (堆爲512,PermSize爲64) – fleur 2011-06-01 08:26:48

+0

我看不出任何提供的選項應該如何影響最小內存使用量?我會嘗試像-XX:+ UseCompressedStrings或-XX:+ UseCompressedOops(在64位虛擬機上) - 實際上,如果內存很重要,我希望你使用的是32位虛擬機,所以第二個虛擬機應該沒有幫助。 – Voo 2011-06-01 19:50:16

回答

1

你說的是常駐記憶還是虛擬的?在我的機器上,簡單的while(true);main沒有任何東西已經讓我獲得了10 MB的駐留內存,主要是因爲內存映射的r/o庫(libc,libm,librt,libpthread ...)和jar。如果可能的話,儘可能減少內存佔用量,或者在任何非平凡的應用程序中減少到10 MB,這隻會意味着更多的分頁,從而降低速度。

另一方面,虛擬內存在我的機器上爲1.1 GB,如果需要可以減少虛擬內存,但爲什麼這麼做呢?未使用的虛擬內存並不真正花費任何東西。

編輯:除此之外,你可能想看看其他HotSpot VM Options,特別是MaxHeapFreeRatio。

+0

是的,我在談論常駐記憶。我嘗試了MaxHeapFreeRatio,到目前爲止,我還沒有看到任何區別。但是,感謝您的鏈接:) – fleur 2011-06-02 04:07:40

+0

如果您關心10MB的常駐內存使用情況,是否意味着您同時運行大量應用程序實例?如果是的話,也許,你應該考慮切換到一個應用程序不斷在內存中服務很多客戶? – 2013-06-18 15:06:54

0

documentation for YAJSW狀態:

包裝內存的要求
YAJSW的靈活性是有代價的。將java用於包裝過程有許多優點。但是,我們支付更高內存佔用的java價格。 JSW包裝只需要幾K內存,而YAJSW的最小虛擬內存需求是90 MB和40 MB物理內存。該值根據操作系統和功能而變化。

如果您的應用程序可以在32位內存限制內運行,那麼可以使用community edition of Tanuki,因爲它的佔位面積較小。