簡體   English   中英

在tomcat中設置JVM內存選項?

[英]Setting JVM memory options in tomcat?

將-Xms和-Xmx設置為相同的值有什么缺點嗎? 還有-XX:MaxPermSize和-XX:PermSize相同的值。

在這里推薦

如果服務器中有足夠的物理內存,是否建議為這兩個選項都設置更高的值?

更新:

Solaris 10中的環境Java 1.6.0_45

Java版本“ 1.6.0_45”

Java(TM)SE運行時環境(版本1.6.0_45-b06)

Java HotSpot(TM)64位服務器VM(內部版本20.45-b01,混合模式)

在Java的舊版本中,當自適應大小調整不能很好地工作時,設置-xms和-xmx是一種好的做法。 在Java> = 7中,它的工作非常好,所以不再需要它。 如果需要更多詳細信息,則必須閱讀有關-XX:+UseAdaptiveSizePolicy標志或參考HotSpot文檔。

您還需要記住的另一件事是,服務器上有8GB RAM並不意味着您可以完全將其用於Java。 你必須留下一些用於系統緩沖區

在Java <= 1.6中,設置XMS = XMS以及在PermGen的情況下進行設置是合理的,但是您必須記住正確調整XMX值,因為過多的內存會導致眼鏡蛇效應

  • 想象兩個值不相同的情況。 在這種情況下,JVM還有其他管理堆大小的任務 只要需要,就增加內存,進行垃圾回收(對於PermGen而言並非如此,導致縮小堆大小。

  • 話雖如此,還有很多其他因素也起着非常重要的作用。 例如, 應用程序使用內存方式還決定了堆大小設置的效果。 例如,計算密集型獨立應用程序將具有與執行大量I / O的典型客戶端服務器電子商務應用程序完全不同的內存需求

  • 要記住的另一點是底層操作系統 操作系統最終根據請求將內存分配給JVM,這種情況發生的方式因操作系統而異。 解決的唯一方法是遍歷特定JVM實現的文檔。

因此,對您的問題的答案可能不是一成不變的YES / NO。 它的主觀性

對於服務器應用程序,建議將ms和mx size用作相同的值。 原因是當它嘗試增加內存時,它將給JVM造成負擔。 如果堆大小相同,則很容易估計完整的gc時間。

在燙發內存的情況下,服務器已經預熱。 這意味着大多數類都已加載,因此燙發大小通常不會更改。 因此,在使用gc log選項測量燙發尺寸后,最好設置Perm的固定尺寸。

服務器配置將更加穩定。

另外,如果您帶來更大的堆大小(通過使用-mx選項)。 這需要更多的完整gc時間。 在完整的gc時間,JVM正在凍結。 所以你需要照顧最大尺寸。

在我看來,如果你有足夠的記憶。 最好運行其他JVM實例(使用群集等)

暫無
暫無

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

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