[英]-XX:MaxPermSize with or without -XX:PermSize
我們遇到了Java.lang.OutOfMemoryError:PermGen空間錯誤,並查看了-Xms
和-Xmx
參數之外的tomcat JVM參數,我們還指定了-XX:MaxPermSize=128m
。 經過一些分析后,我看到偶爾在PermGen空間上發生垃圾收集,使它無法完全運行。
我的問題是:除了增加-XX:MaxPermSize
,如果我也指定-XX:PermSize
什么-XX:PermSize
? 我知道總內存為Xmx + maxPermSize,但是是否有其他原因指定-XX:MaxPermSize
時-XX:MaxPermSize
-XX:PermSize
不應該存在?
如果您有處理這些JVM參數的實際經驗,請分享。
ps。 JVM是HotSpot 64位服務器VM版本16.2-b04
-XX:PermSize
指定將在JVM啟動期間分配的初始大小。 如有必要,JVM將最多分配-XX:MaxPermSize
。
通過使用-XX:PermSize
和-Xms
作為參數,您可以調整-例如-應用程序啟動的性能。 我最近沒有看過它,但是幾年前-Xms
的默認值大約是32MB(我認為),如果您的應用程序需要的值遠遠超過它,則會觸發許多填充內存周期-滿了垃圾收集-增加內存等,直到它加載了所需的一切。 此周期可能會對啟動性能造成不利影響,因此,立即分配所需的編號可以改善啟動效果。
類似的循環應用於永久代。 因此,調整這些參數可以改善啟動效率(以及其他)。
警告 JVM在分配內存,划分eden空間和較早的代等方面具有很多優化和智能,因此請勿執行使-Xms
等於-Xmx
或-XX:PermSize
等於-XX:MaxPermSize
事情。因為它會刪除JVM可以應用於其分配策略的某些優化,因此降低了應用程序性能而不是提高了性能。
一如既往:進行非常規的測量以證明您的更改實際上改善了整體性能(例如,縮短啟動時間可能會對應用程序使用期間的性能造成災難性影響)
如果要進行性能調整,通常建議將-XX:PermSize
和-XX:MaxPermSize
設置為相同的值,以提高JVM
效率。
這里是一些信息:
如果使用的是CMS
GC
也可以指定-XX:+CMSClassUnloadingEnabled
以啟用類卸載選項。 這可能有助於降低Java.lang.OutOfMemoryError: PermGen space
的可能性
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.