问题描述:

我们公司产品线上运行过程中,需要调用第三方Web Service进行数据抓取,现场小伙伴反馈,调用第三方接口,导致第三方程序内存溢出,具体报错信息:

OutOfMemoryError: Java heap space

现场第三方通过调整内存大小为4G,仍然报错,至此寻求帮助。

原因分析:

关于内存溢出

Tomcat本身是依赖于JVM虚拟机的,报错问题的解决还是回归到JVM对内存的管理上。
JVM虚拟机内存管理分为:堆内存(运行时数据区域)非堆内存(JVM本身使用的内存)

常见内存溢出报错信息

  1. OutOfMemoryError: Java heap space 堆溢出
  2. OutOfMemoryError: PermGen space 非堆溢出
  3. OutOfMemoryError: unable to create new native thread. 无法创建新的线程,并不常见

配置解决方案

-Xmx Java Heap最大值,默认值为物理内存的1/4;

-Xms Java Heap初始值,默认是物理内存的1/64;

-Xmn 设置JVM堆的‘新生代’的最大内存;

-Xss 每个线程的Stack大小;

-XX:PermSize:设定内存的永久保存区域;

-XX:MaxPermSize:设定最大内存的永久保存区域;

-XX:NewSize:设置JVM堆的‘新生代’的默认大小;

-XX:MaxNewSize:设置JVM堆的‘新生代’的最大大小;

重要知识点

  1. 在Java中,JVM提供GC机制,由一个被称为垃圾回收器的守护线程执行的。
  2. GC 回收一个对象之前会调用对象的finalize()方法
  3. System.gc()和Runtime.gc()会向JVM发送执行GC的请求,但是JVM不保证一定会执行GC。
  4. 查看堆内存信息:
Runtime.getRuntime().maxMemory(); //最大可用内存,对应-Xmx Runtime.getRuntime().freeMemory(); //当前JVM空闲内存 Runtime.getRuntime().totalMemory(); //当前JVM占用的内存总数,其值相当于当前JVM已使用的内存及freeMemory()的总和

参考博文

https://blog.csdn.net/qq_35440040/article/details/97805987

解决方案:

经过询问,现场的物理内存大小为32G,所以第三方平台设置为4G肯定不会解决问题的,Java Heap最大值,默认值为物理内存的1/4;,所以需要设置为至少8G以上才可以生效。

打开Tomcat根目录下的bin文件夹,编辑catalina.bat(linux为catalina.sh),将其中的%CATALINA_OPTS%(共有四处)替换为:-Xmx10240m -Xms10240m

Tomcat内存溢出及配置解决方案相关推荐

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

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

  2. Tomcat内存溢出原因分析

    Tomcat内存溢出的原因  在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三 ...

  3. Tomcat内存溢出解决办法

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

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

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

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

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

  6. Tomcat 内存溢出 详解

    Tomcat 内存溢出 详解 JVM管理两种类型的内存,堆和非堆.堆是给开发人员用的上面说的就是,是在JVM启动时创建:非堆是留给JVM自己用的,用来存放类的信息的.它和堆不同,运行期内GC不会释放空 ...

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

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

  8. oom 如何避免 高并发_【高并发】高并发环境下如何防止Tomcat内存溢出?看完我懂了!!...

    [高并发]高并发环境下如何防止Tomcat内存溢出?看完我懂了!! 发布时间:2020-04-19 00:47, 浏览次数:126 , 标签: Tomcat 写在前面 随着系统并发量越来越高,Tomc ...

  9. tomcat内存溢出(修改catalina.bat后windows启动tomcat服务没有效果) | 王猛的个人主页...

    2019独角兽企业重金招聘Python工程师标准>>> tomcat内存溢出(修改catalina.bat后windows启动tomcat服务没有效果) | 王猛的个人主页. 转载于 ...

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

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

最新文章

  1. Redis的Hash操作
  2. 结对编程2——单元测试
  3. CTO被裁,离职前给组了的高级开发们8个建议。
  4. bootstrap表格遍历_BootStrap实现带有增删改查功能的表格(DEMO详解)
  5. 这些测试细节,你注意到了吗?
  6. 电脑软件上的按钮原来是这样来的:按钮组件
  7. python编程入门-Python 异步编程入门
  8. 插件前奏-android黑科技 hook介绍
  9. 如何写一份大家都满意的专利说明书
  10. 【3dmax千千问】初学3dmax插件神器第23课:3dmax自学渲染进阶提升教程|疯狂模渲大师排除了特殊的材质后,室内设计师还要去除VRAY的光线追踪,再设计3dmax效果图!
  11. MySQL数据库酒店客房管理系统(含MySQL源码) 结课作业 做的不是很好
  12. 元宇宙大杀器来了!小扎祭出4款VR头显,挑战视觉图灵测试
  13. 远程服务器 检索{00024500-0000-0000-C000-000000000046}组件失败 80080005 服务器运行失败 解决方案
  14. pyhton——爬小说网站(顶点最强国防生)
  15. vulfocus——骑士cms任意代码执行(CVE-2020-35339)
  16. Java程序设计 北京大学 2019冬期中测验
  17. Eyelink眼动仪与Psychopy连接
  18. 奇迹MU虚拟机 游戏多开无法登陆和登录错误的问题如何解决?
  19. Ubuntu安装常用Linux桌面系统
  20. 总有人会偷看你的朋友圈

热门文章

  1. Spring boot mqtt客户端
  2. 导出期刊对应格式的参考_3.2怎样按照某个期刊的格式要求生成文后的参考文献.PDF...
  3. vecm模型怎么写系数_VAR模型与向量VECM模型(7)
  4. Servlet运行原理(Tomcat为例)
  5. 搞深度学习框架的那帮人,不是疯子,就是骗子
  6. 机器人学DH参数及利用matlab符号运算推导
  7. Matlab 显示图像太慢
  8. 软考初级程序员考试大纲
  9. 人口增长模型参数估计matlab,人口增长模型及实现(附MATLAB代码)
  10. 课程设计(飞机订票系统) 超全