解決Ubuntu Tomcat內存溢出可按以下步驟操作:
查看日志定位問題
檢查/var/log/tomcatX/catalina.out(X為版本號)或logs/目錄下的日志,搜索OutOfMemoryError,判斷是堆內存、元空間(MetaSpace)或線程溢出。
調整JVM參數
/etc/default/tomcatX(或setenv.sh),增加-Xms(初始堆)和-Xmx(最大堆),建議設置為物理內存的80%,例如:JAVA_OPTS="-Xms1024m -Xmx2048m"。-XX:MaxMetaspaceSize=512m。-XX:MaxPermSize=512m。-XX:+UseG1GC,優化大內存場景。優化應用代碼
try-with-resources或手動釋放資源。監控與分析工具
jconsole、VisualVM或Eclipse MAT生成堆轉儲(Heap Dump),分析內存占用情況。top或htop命令監控Tomcat進程的內存使用,確認調整后是否改善。操作系統層面調整
ulimit -u調整系統最大線程數,或在Tomcat的conf/server.xml中限制maxThreads參數。升級Tomcat版本
舊版本可能存在內存管理缺陷,建議升級到最新穩定版,獲取優化后的內存管理機制。
示例操作(以Java 8+為例):
/etc/default/tomcat9:JAVA_OPTS="-Xms1024m -Xmx2048m -XX:MaxMetaspaceSize=512m -XX:+UseG1GC"
sudo systemctl restart tomcat9
若問題仍未解決,需結合堆轉儲分析具體泄漏點,或進一步排查第三方庫的兼容性問題。