1. 程式人生 > >tomcat記憶體溢位處理方法

tomcat記憶體溢位處理方法

tomcat記憶體溢位問題:

    在JVM中如果98%的時間是用於GC且可用的 Heap size 不足2%的時候將丟擲此異常資訊。

    JVM堆的設定是指java程式執行過程中JVM可以調配使用的記憶體空間的設定,

    JVM在啟動的時候會自動設定Heap size的值,

    其初始空間(即-Xms)是實體記憶體的1/64,最大空間(-Xmx)是實體記憶體的1/4。

    可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設定。

    在tomcat伺服器遇到這樣的問題: ---java.lang.OutOfMemoryError: PermGen space

    這個異常和JVM預設劃分的記憶體上限是128M有關,如果你的業務足夠繁忙,128M是遠遠不夠的,

    所以可以給JVM分配上1G甚至更多(視伺服器的配置而定),這樣就可以避免記憶體溢位。
 

解決方法:

    1)linux下

       編輯tomcat的catalina.sh檔案,在第一行的後面增加一句:

       JAVA_OPTS='-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M'

       注意:單引號不能少

            -server表示以server模式執行(執行效率比預設的client高很多)

    -Xms256m是最小記憶體

    -Xmx512m是最大記憶體

    其中的256與512可根據你自己的記憶體做相應調整

    PermSize/MaxPermSize最小/最大堆大小

    *一般報記憶體不足時,都是說這個太小,堆空間剩餘小於5%就會警告,可已適度把這個稍微設大一點,視自己機器記憶體而定

       新增程式碼樣例:

       #!/bin/sh

       JAVA_OPTS='-server -Xms1024m -Xmx1024m XX:PermSize=128M -XX:MaxPermSize=256M'

       # -----------------------------

    2)windows下

       編輯tomcat的catalina.bat檔案,在第一行的後面增加一句:

       set JAVA_OPTS=-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M

       注意:沒有單引號

注:Java Options中每一行的最後不能有空格。