Tomcat項目內存參數調優


一、常見的Java內存溢出有以下三種:
 1. Java.lang.OutOfMemoryError: Java heap space 即JVM Heap溢出

解釋說明:JVM在啟動的時候會自動設置JVM Heap的值,JVM堆的設置是指java程序運行過程中JVM可以調配使用的內存空間的設置。其初始空間默認是物理內存的1/64,最大空間不可超過物理內存。JVM提供-Xmn -Xms -Xmx等選項來進行設置。

出錯場景:在JVM中,如果98%的時間是用於GC,且可用的Heap size不足2%時,將會出現JVM Heap溢出

解決方法:修改JVM Heap的大小。

2.java.lang.OutOfMemoryError: PermGen space 即PermGen space溢出 
解釋說明:PermGen space是指內存的永久保存區域。這個區域主要存放Class和Meta信息,Class在被Load時就會被放入PermGen space。
出錯場景:如果APP載入很多CLASS,就可能會出現PermGen space溢出。(因為sun的GC不會在程序運行時對PermGen space進行清理)常見於web服務器對JSP進行pre compile的時候

解決方法:修改MaxPermSize大小 
3. java.lang.StackOverflowError 即棧溢出

解釋說明:JVM采用的是棧式的虛擬機,函數的調用過程都體現在堆棧和退棧上。

出錯場景:通常棧的大小是1-2MB的,如果調用構造函數的 “層”太多,則會出現棧溢出

二、Tomcat的JVM內存溢出解決方法 
在生產環境中,tomcat內存設置不好很容易出現JVM內存溢出,解決方法就是修改Tomcat中的catalina.sh文件。 
在catalina.sh文件中,找到cygwin=false,在這一行的前面加入參數,具體如下

$ vim TOMCAT_HOME/bin/catalina.sh

JAVA_OPTS=”-server -Xms800m -Xmx800m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m”

其他說明: 
1.“m”說明單位是MB,否則默認是KB 
2.一般使用物理內存的80%作為堆大小 
3.一般把-Xms和-Xmx設為一樣大 
4.一般把-Xmn設置為-Xmx值的1/4 
5.一般將堆的總大小的50%到60%分配給新生成的池

三、jvm參數說明: 
-server 一定要作為第一個參數,啟用JDK的server版本,在多個CPU時性能佳 
-Xms java Heap初始大小。 默認是物理內存的1/64。 
-Xmx java heap最大值。建議均設為物理內存的80%。不可超過物理內存。 
-Xmn java heap最小值,一般設置為Xmx的3、4分之一。 
-XX:PermSize 設定內存的永久保存區初始大小,缺省值為64M。 
-XX:MaxPermSize 設定內存的永久保存區最大大小,缺省值為64M。 
-XX:SurvivorRatio=2 生還者池的大小,默認是2。如 
-XX:NewSize 新生成的池的初始大小。 缺省值為2M。 
-XX:MaxNewSize 新生成的池的最大大小。 缺省值為32M。 
+XX:AggressiveHeap 讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。 
-Xss 每個線程的Stack大小 
-verbose:gc 現實垃圾收集信息 
-Xloggc:gc.log 指定垃圾收集日志文件 
-XX:+UseParNewGC 縮短minor收集的時間 
-XX:+UseConcMarkSweepGC 縮短major收集的時間 
-XX:userParNewGC 可用來設置並行收集(多CPU) 
-XX:ParallelGCThreads 可用來增加並行度(多CPU) 
-XX:UseParallelGC 設置后可以使用並行清除收集器(多CPU)


 

1.linux 下調整tomcat的內存設置

修改bin目錄下catalina.sh文件

在cygwin=false之上

添加以下語句

JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m"

其中-xms為jvm初始化堆的大小,-xmx為jvm堆的最大值

2. window 下調整tomcat的內存設置

修改bin目錄下catalina.bat文件@echo off下追加

set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=256M

3.eclipse下修改外置tomcat的內存設置

open launch configuration=>arguments=>vm arguments

追加-Xms1024M -Xmx4096M -XX:PermSize=512m -XX:MaxPermSize=2048m


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM