tomcat outofmemoryerror內存溢出

tomcat內存溢出,堆內存可以分爲三個部分:永久保存區域,新生區,老年區。tomcat比較常見的內存溢出包括(OutOfMemoryError:java heap space)和(OutOfMemoryError:PermGen space)兩種。

1.OutOfMemoryError:java heap space

heap space通常指程序運行過程中,虛擬機可以調配的內存區域,程序中new的對象在該區域。GC機制會對該區域的內存進行回收,因此該區域的內存是動態的。

該區域內存溢出通常有兩個原因:

  • 程序存在內存泄露

      程序的內存泄漏,需要根據實際情況跟蹤排查,找出內存泄漏的原因。

  • tomcat參數配置的內存太小了

      tomcat參數給虛擬機分配的內存太小了,需要調大內存。

      打開TOMCAT_HOME/bin/catalina.bat文件,找到 set JAVA_OPTS= -Xms512m -Xmx512m,根據實際情況修改這兩個參數的大小。Xms(初始堆大小)和Xmx(最大堆大小)可以設置爲相同大小,最大不要超過可用物理內存的80%。

可通過cmd命令:java -Xmx2048M -version   修改2048的值,來測試最大Xmx的值,如果超出最大值會報錯,否則會輸出jdk版本。

2.OutOfMemoryError:PermGen space

PermGen space是永久保存區域,該區域用於存放Class和Meta信息,GC不會對該區域進行內存回收,因此該區域內存是相對靜態的。如果應用中有較多的Class,而分配的空間不足的話就會出現內存溢出。

針對該區域的內存溢出,可以調整tomcat的參數配置,調大該區域的內存。

打開TOMCAT_HOME/bin/catalina.bat文件,找到-XX:PermSize=128m  -XX:MaxPermSize=256m,根據實際情況修改這兩個參數的大小。-XX:PermSize(永久保存區初始值),-XX:MaxPermSize(永久保存區最大值)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章