我們運行一個大型的基於Java的應用程序,它正處於重大的發展階段。每隔3到6個月,似乎我們不得不增加PERM內存的大小,否則無論是應用程序啓動還是聯機後不久,都有可能導致內存不足。該應用程序託管在JBoss 4.2和Tomcat服務器中。Java中有多少是PERM(1.5GB似乎很高)
我們目前的設置是:
-server -Xms12G -Xmx12G -XX:MaxPermSize參數= 1536M -XX:+ UseConcMarkSweepGC -XX:+ CMSIncrementalMode
我可以幫助,但不知道這似乎可怕高。
PERM內存在啓動時似乎很快就會填滿。使用jstat的任何地方在90到99%之間。
我們的web應用程序包含30個單獨的戰爭文件。在JBoss中,這些部署爲一個大的300MB + ear文件。
大型應用程序對我們這麼多PERM來說是正常的嗎?
也許是時候打破應用程序?這個300MB的EAR文件是什麼?您必須擁有大量圖形和其他內容,也許可以將您的靜態內容移動到由Web服務器提供服務並讓AppServer執行邏輯。 – 2011-05-11 02:49:11
這看起來真的非常非常非常高。沒有什麼真正有用的建議,但你的代碼庫有多大?是否有可能在不同的類加載器中加載多個庫副本?對於當前的JBoss Classloader不太瞭解,除了已經報告過問題之外,您是否在另一個容器上得到類似的結果? – 2011-05-11 02:53:20
代碼庫相當龐大(ERP系統)。 100多個外部jar庫(有些是客戶現成的),它們在EAR文件(common lib)中是「共享的」,但從我的閱讀中看來,每場戰爭都會得到自己的副本。真的嗎? – jrhickey 2011-05-11 18:06:40