Tomcat报错—Tomcat内存溢出及大小调整

本文记录一些常见的Tomcat经常出现的内存溢出问题,在查询大量数据和加载jar包出现异常。

大家好,又见面了,我是全栈君。

本文记录一些常见的Tomcat经常出现的内存溢出问题,在查询大量数据和加载jar包出现异常。一般JVM内存溢出(OOM),分为堆内存溢出和PermGen区内存溢出:

1:java.lang.OutOfMemoryError: PermGen space(PermGen区内存溢出

PermGen space(Permanent Generation space),是指内存的永久保存区域,

主要用于存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,

它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对其进行清理,

所以如果应用中有很多CLASS的话,就很可能出现PermGen space错误。如果加载的Class超过MaxPermSize,

就会抛出该异常,可以通过调整MaxPermSize进行解决。

这种错误常常出现在WEB服务器在对项目中的JSP进行pre—compile(预编译)的时候,

还有就是项目使用了很多的第三方的jar包,这个jar的大小超过了JVM默认的大小(4M),

也是会出现此错误的。


2:java.lang.OutOfMemoryError: Java heap space(堆溢出

JVM堆是指java程序运行过程中JVM可以调配使用的内存空间。JVM在启动的时候会自动设置Heap size的值,

其初始空间(-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。

可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。

Heap size 的大小是Young Generation 和Tenured Generaion 之和。在JVM中如果98%的时间是用于GC且

可用的Heap size 不足2%的时候将抛出此异常信息。

提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,

而-Xmn为1/4的-Xmx值。

这两种方式的解决方法,在/bin/catalina.bat文件添加,根据自己的需求修改内存大小

加入JAVA_OPTS=”-server -XX:PermSize=64M -XX:MaxPermSize=128m

rem ----- Execute The Requested Command ---------------------------------------

JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m"

echo Using CATALINA_BASE:   "%CATALINA_BASE%"
echo Using CATALINA_HOME:   "%CATALINA_HOME%"
echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"

解释:

JAVA_OPTS=’-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】’

需要把这个两个参数值调大。例如:

JAVA_OPTS=’-Xms256m -Xmx512m’

表示初始化内存为256MB,可以使用的最大内存为512MB。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121273.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月24日 下午2:00
下一篇 2022年2月24日 下午3:00


相关推荐

  • HDU 3177 Crixalis's Equipment(贪婪)「建议收藏」

    HDU 3177 Crixalis's Equipment(贪婪)

    2022年1月18日
    38
  • Java知识体系最强总结(2021版)[通俗易懂]

    更新于2019-12-1510:38:00本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。文章目录…

    2022年4月6日
    52
  • Mstsc远程时出现身份验证错误

    Mstsc远程时出现身份验证错误问题描述 我们在远程桌面登录时 出现身份验证错误 要求的函数不受支持 这可能是由于 CredSSP 加密 Oracle 修正导致的 方法一 修改组策略快捷键 Win R 键入 gpedit msc 回车打开本地组策略计算机配置 gt 管理模板 gt 系统 gt 凭据分配里找到 加密 Oracle 修正 选项选择已启用 并将保护级别调整为易受攻击 方法二 修改注册表以管理员权限运行 CMD 将下面的注册表命令粘贴运行 或复制保存为 Bat 批处理执行 强制更新的客户端的值是 0 已缓解是

    2026年3月17日
    2
  • navicate premium15 激活码(注册激活)[通俗易懂]

    (navicate premium15 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsaWN…

    2022年3月26日
    465
  • 基础算法-查找:插值查找

    基础算法-查找:插值查找

    2021年9月6日
    55
  • html里制作简单导航栏

    html里制作简单导航栏今天简单的做了一下网页里的导航栏。效果如下:代码: 实验3 ul{/*设置导航栏的框框*/ margin:30pxauto;/*框框整体的位置,30px是指离网页的顶部和下部的距离,auto控制的是左右距离为自动调节*/ width:600px;/*框框的宽度*/ height:350px;/*框框的长度*/ pad

    2022年5月28日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号