tomcat 報內存溢出怎麼辦?

java.lang.OutOfMemoryError....

只需要修改一下 tomcat 的運行內存即可

myeclipse 配置如下:

找到自己配置的 tomcat 找到下面的 jdk

加上下面一段話 -Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

eclipse 配置如下:

找到配置好的 tomcat 點擊 Open launch configuration

點擊 Arguments 更改 VM arguments 框中的內容,將 -Xms512M-Xmx1024M -XX:MaxPermSize=512m 放到最前面

linux 配置如下:

修改啟動文件即可

vim TOMCAT_HOME/bin/catalina.sh

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

windows下也可以直接修改 tomcat 的啟動文件(catalina.bat)

找到 tomcat 的安裝目錄/bin/catalina.bat 在第一行加上

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

也可以可以自己調配(以下是解釋)

-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)


推薦閱讀:

adt-bundle-windows沒有集成tomcat,如何配置tomcat伺服器?網上的教程大多很古老不適用。
tomcat運行久了,需要重新啟動,才能接收客戶端請求,但是靜態資源可以訪問,怎麼解決?
tomcat中對靜態資源的訪問也會用servlet來處理嗎?
直接優化JVM 和 Tomcat JVM(修改catalina.sh)優化有什麼區別?
什麼樣的項目才會考慮使用JBoss、WebSphere、WebLogic等伺服器?

TAG:ApacheTomcat | MyEclipse | Eclipse插件 |