linux解决Tomcat内存溢出的问题
作者:jingxian 发布时间:2023-10-19 00:32:12
Tomcat本身不能直接在计算机上运行,需要依赖于操作系统和一个JAVA虚拟机。JAVA程序启动时JVM会分配一个初始内存和最大内存给程序。当程序需要的内存超出内存的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。
一、常见的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,在这一行的前面加入参数,具体如下
# vi 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)


猜你喜欢
- 昨天写项目时需要用到Mysql的衍生版本percona, 就想用Doker来安装.结果踩了一晚上坑, 今早终于解决. 现记录在此.这个坑原因
- 好多站长朋友经常苦恼,网站做了这么长时间啦,怎么百度还是不收录呢?为什么别人的站能正常收录,而我的站不收录呢?首先从本身找找原因,如果你网站
- 途牛网tuniu.com作为国内知名的旅游直销网站在国内还是很有名气的,也是南京本地为数不多的比较成功的互联网企业。去年大学刚毕业刚好认识途
- 北京时间10月9日消息,据国外媒体报道,YouTube CEO查德·赫尔利(Chad Hurley)今天表示,该网站每
- 很多人会认为SEO很简单,很多人也会认为SEO很迷惑?简单的是什么呢?大家会认为SEO就是做关键词排名,就是做流量;迷惑的又是什么呢?除了做
- 标题中的四个关键词,对于做网站做博客的人来说,再也熟悉不过了。这四个关键词牵动着利益和道德的问题,利益和道德从来都是一对难以调和的矛盾,但要
- 本文代码摘自Low End Box,LEB的站长因为成功搭建了80M的WEB环境而被业内传为佳话,这一次他懒惰,不想长篇大论,就
- 在网站上显示访问者的评论,是提高访问者参与度的方法之一。 此外,你还可以推荐在网站上推荐一些精彩评论,并给出评论者的网站链接。 下面我们就为
- 最近在学习 python,使用 flask 实现了个个人博客程序,完了想部署到服务器上。因为是新手,一路磕磕绊绊最终把它基本搞定。网上资料对
- server|window
- 今天一早例行操作,打开我的邮箱,一封“您已成功获得百度主题推广服务”的邮件映入我的眼帘,开始我还以为看错了,后来点进去从头到尾仔细看了几篇,
- 基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管理(限制用户的活动目录)。1、开通 sftp
- 注:如果文章内容有误,请留言指出,谢谢合作。名字Name : lseek - reposition read/write file offs
- “我从来没有想到,充满创意的Google竟然要看成绩单!”12月8日中午,上海江苏路一家咖啡厅,说起几个月前在Google美国总部的面试经历
- 英文帐号@vip.qq.com是QQ邮箱全新提供的vip邮件地址(免费),连同@qq.com地址,QQ邮箱真正实现了一个邮箱两个域名。vip
- 软文写作最常遭遇问题:网络营销者、网站站长、文案写作者、销售人员最头疼的问题常常是不知道该写些什么,缺乏软文写作的思路和方向,本次,我们以实
- 人说在IT公司没有不忙的。你会发现每天RTX要闪烁几十个对话框是再正常不过的事情。可能你正好在写一个ppt,同时领导安排今天必须出一封邮件,
- 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心
- 下面有两种办法可以安装yum:一、下载yum的rpm包直接安装http://centos.ustc.edu.cn/centos/5.4/os
- 一、网站的三大要素,文字,图片,链接目前为止互联网上新的网络应用层出不穷。从过去的论坛到博客,再到现在的社会性网络服务。各类网站基本还都没有