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,在这一行的前面加入参数,具体如下

/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)

Tomcat 内存溢出问题与解决方法相关推荐

  1. jmeter(二十二)内存溢出原因及解决方法

    jmeter(二十二)内存溢出原因及解决方法 参考文章: (1)jmeter(二十二)内存溢出原因及解决方法 (2)https://www.cnblogs.com/imyalost/p/7901064 ...

  2. java内存溢出的情况解决方法

    内存溢出虽然很棘手,但也有相应的解决办法,可以按照从易到难,一步步的解决. 第一步,就是修改JVM启动参数,直接增加内存.这一点看上去似乎很简单,但很容易被忽略.JVM默认可以使用的内存为64M,To ...

  3. php流导出excel内存溢出,phpExcel导出大量数据出现内存溢出错误的解决方法

    phpExcel将读取的单元格信息保存在内存中,我们可以通过 复制代码代码如下: PHPExcel_Settings::setCacheStorageMethod() 来设置不同的缓存方式,已达到降低 ...

  4. 使用solr的DIHandler 构建mysql大表全量索引,内存溢出问题的解决方法

    solr官方给出的解决方式是: DataImportHandler is designed to stream row one-by-one. It passes a fetch size value ...

  5. MyEclipse 2015 运行tomcat 内存溢出的解决方法

    MyEclipse 2015 运行tomcat 内存溢出的解决方法 参考文章: (1)MyEclipse 2015 运行tomcat 内存溢出的解决方法 (2)https://www.cnblogs. ...

  6. myeclipse tomcat内存溢出解决方法

    为什么80%的码农都做不了架构师?>>>    Tomcat直接启动正常,通过myeclipse启动tomcat内存溢出. MyEclipse启动Tomcat无视catalina.b ...

  7. Tomcat内存溢出解决办法

    工作中,Tomcat内存溢出遇到两次了,就在网上找了些资料,将解决办法分享一下:   使用Java程序从数据库中查询大量的数据时出现异常: java.lang.OutOfMemoryError: Ja ...

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

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

  9. java最大内存_JAVA:测试java虚拟机支持的最大内存 Xmx 值?Tomcat 内存溢出?

    如下命令,即可测试:不断调整n的值,windows上32位的1.6x为: 1610m java -Xmx1610M -version java -Xmx1610m -version 网摘的tomcat ...

  10. div固定大小文字溢出自动缩小_【高并发】高并发环境下如何防止Tomcat内存溢出?看完我懂了!!

    写在前面 随着系统并发量越来越高,Tomcat所占用的内存就会越来越大,如果对Tomcat的内存管理不当,则可能会引发Tomcat内存溢出的问题,那么,如何防止Tomcat内存溢出呢?我们今天就来一起 ...

最新文章

  1. 如何定制一款12306抢票浏览器——启动“人”线程
  2. 新建swap分区的规划、挂载和自动挂载示例
  3. 小程序 数据库 时间_使用云开发数据库构建更生动的小程序
  4. Linux设备模型(总结)
  5. c++ 返回string_JVM系列之:String.intern和stringTable
  6. android R启动找不到super分区问题
  7. ADO RecondsetPtr 以及如何实现对表的增加删除数据
  8. python threading.loca讲解
  9. LeetCode刷题(29)
  10. HTTPS 加密算法原理详解
  11. Android TV开发总结(二)构建一个TV Metro界面(仿泰捷视频TV版)
  12. android 阻止来电号码,4种方法来在安卓手机上阻止来电
  13. 金融销售关键在于客户感受
  14. hibernate查询的方式 都有哪些
  15. windows10 C:\windows\system32\winlogon.exe自动关机
  16. 40岁后吃不胖的秘诀 济阳高穗饮食理论
  17. LiveData 机制详解
  18. win10 远程桌面卡顿_win10远程桌面连接卡如何解决_windows10远程连接桌面很卡怎么处理...
  19. 全球首个华纳兄弟酒店正式营业,《老友记》喷泉、全新蝙蝠侠战车亮相
  20. 《信号与系统》第一章 信号与系统概述

热门文章

  1. java url 长度限制_GET请求中URL的最大长度限制总结
  2. NV21 旋转+转为NV12
  3. 极光推送指定用户推送_苹果推送iOS 12.1.4和macOS 10.14.3修复FaceTime 国内用户可酌情...
  4. 如何使用工资短信生成器
  5. 英文参考文献的著录规范
  6. 网络服务器管理系统设置实训总结,网络系统管理与维护实训报告.doc
  7. 大数据入门的知识体系,大数据学习路线
  8. Silverlight:针式打印机文字模糊的改善办法
  9. html下播放.wav,wav格式文件用什么播放
  10. 阿里 delphi java_DelphiCodeToDoc--像JavaDoc一样的Delphi源码文档生成工具