簡體   English   中英

-XX:MaxPermSize帶有或不帶有-XX:PermSize

[英]-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效率。

這里是一些信息:

  1. 在x86和amd64平台上支持大頁面堆
  2. Java對大內存頁面的支持
  3. 設置永久代大小

如果使用的是CMS GC也可以指定-XX:+CMSClassUnloadingEnabled以啟用類卸載選項。 這可能有助於降低Java.lang.OutOfMemoryError: PermGen space的可能性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM