在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat、jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常。这主要是由于应用服务器的内存不足引起的。这种异常常有以下几种情况(以下以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理):

1. java.lang.OutOfMemoryError: PermGen space

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space。从文字上看就是内存溢出,解决方法是加大内存。为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小

a.如果tomcat是以bat方式启动的,则如下设置:

修改TOMCAT_HOME/bin/catalina.sh
在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m"

b.如果tomcat是注册成了windows服务,以services方式启动的,则需要修改注册表中的相应键值。

打开注册表,找到目录HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\htfty\Parameters\Java,其中目录地址中红色标注的(如htfty)需要根据不同情况作修改,为tomcat服务注册成windows服务的名称。 可以看到JvmMs和JvmMx项,其中JvmMs设置最小的内存使用参数,JvmMx设置最大的内存使用参数。设置好JvmMs和JvmMx项的值,重启tomcat服务器即可生效。
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

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

a.如果tomcat是以bat方式启动的,则如下设置:

修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

b.如果tomcat是注册成了windows服务,以services方式启动的,则需要修改注册表中的相应键值。

打开注册表,找到目录HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\htfty\Parameters\Java,其中目录地址中红色标注的(如htfty)需要根据不同情况作修改,为tomcat服务注册成windows服务的名称。 可以看到JvmMs和JvmMx项,其中JvmMs设置最小的内存使用参数,JvmMx设置最大的内存使用参数。设置好JvmMs和JvmMx项的值,重启tomcat服务器即可生效。

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

解决Tomcat运行内存不足问题相关推荐

  1. java程序运行内存分配不足_解决Tomcat运行内存不足问题

    在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat.jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常.这主要是由于应用服 ...

  2. linux/centos 解决Tomcat内存溢出,centostomcat

    2019独角兽企业重金招聘Python工程师标准>>> linux/centos 解决Tomcat内存溢出,centostomcat Tomcat本身不能直接在计算机上运行,需要依赖 ...

  3. 怎么解决tomcat占用8080端口问题图文教程 端口被占用

      怎么解决tomcat占用8080端口问题 相信很多朋友都遇到过这样的问题吧,tomcat死机了,重启eclipse之后,发现 Several ports (8080, 8009) required ...

  4. linux 下,解决tomcat服务器接收中文乱码的问题

    linux 下,解决tomcat服务器接收中文乱码的问题 参考文章: (1)linux 下,解决tomcat服务器接收中文乱码的问题 (2)https://www.cnblogs.com/taz372 ...

  5. 怎么解决tomcat占用8080端口问题图文教程

    转自:http://jingyan.baidu.com/article/1612d5006c3cdae20e1eee04.html 相信很多朋友都遇到过这样的问题吧,tomcat死机了,重启eclip ...

  6. web服务器获取项目路径问题,读取web项目properties文件路径 解决tomcat服务器找不到properties路径问题...

    1.需求:有时候我们产品经理给我们的需求是会不断变化的,例如数量是1000现在变成500,我们不可以去改代码吧,这样很麻烦,所以就可以改配置文件properties(这个数据库链接一样),当然也有js ...

  7. tomcat下只有.class文件 没有java文件_解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题...

    今天部署项目到tomcat,发布完后,启动tomcat,报class not found: 临时找了个解决方案,由于项目是copy过来的,于是就将原来项目的classes下面编译好的class文件也一 ...

  8. 解决Tomcat下源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示

    解决Tomcat下源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示 笔者报错时的运行环境: JDK 13.0.2 ...

  9. 解决 Tomcat 下 getInitParameter 返回 null

    解决 Tomcat 下 getInitParameter 返回 null getInitParameter 返回 null config.getInitParameter 返回 null 笔者报错时的 ...

  10. 解决Tomcat下IntelliJ IDEA报错java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener

    解决Tomcat下IntelliJ IDEA报错java.lang.NoClassDefFoundError: javax/servlet/ServletContextListener   笔者在做代 ...

最新文章

  1. 【android-tips】如何在android应用中插入百度广告(附源码)
  2. 【洛谷】P1388 算式(dp)
  3. Django(part48)--用户认证系统
  4. python3一个简单的网页抓取
  5. 一个 WordPress 安装,多个博客
  6. Android_Service组件详解
  7. Python之进程+线程+协程(同步对象、信号量、队列)
  8. 大数据之R语言速成与实战
  9. STL模板整理 priority_queue
  10. Exchange 2013CU17和office 365混合部署-设置属性筛选(三)
  11. ARM9学习笔记之——SDRAM实验
  12. Java程序设计24学时轻松掌握_24小时轻松掌握系列——Java程序设计 24学时轻松掌握...
  13. 磁盘串口和并口的区别
  14. 项目选题报告答辩总结
  15. iphone或者ipad上安装自己打包的ipa文件
  16. Deli条码打印机如何批量打印二维码
  17. hrbust 2343 巴啦啦能量
  18. 太阳黄经和平黄经的计算方法
  19. A-Frame WebVR试玩报告
  20. Android 7.0行为变更 FileUriExposedException解决方案

热门文章

  1. 解锁小众网站 站在巨人的肩膀上
  2. C# 字节(数组)与位之间的计算
  3. XMPP即时通讯协议使用(六)——开发Openfire聊天记录插件
  4. 用selenium做模拟登录163邮箱(有两种方式,行为链)
  5. 业余无线电新手入门基础知识(全网最全)
  6. 推荐系统:石器与青铜时代
  7. excel合并两列内容_办公教程:Excel如何快速将两列内容合并成一列
  8. 局域网联通公网小部分知识点
  9. ubuntu 20.04.1安装Google输入法
  10. 重复组合公式及其证明方法