当前位置: 首页 > news >正文

JVM-内存溢出的原因、CPU占满的原因

1.内存溢出的原因

OOM的排查思路_oom排查_java排坑日记的博客-CSDN博客

每个进程的内存(限制,譬如2G)=最大堆容量+最大方法区容量+程序计数器+虚拟机栈和本地方法栈。多线程下每个线程栈越大,越容易OOM.

        1.堆内存溢出(OOM)

                1)大对象(从数据库里一次请求了大量的数据)

                2)同时引用的对象过多(大批量的请求、批量任务导致)

                3)内存泄漏(使用了file之类的资源没有关闭回收)

        解决方案:

                1.-xmx 调高jvm堆内存空间

                2.优化代码,查询过滤

                3.添加机器资源,流量降级

                4.内存泄漏:定位内存泄漏原因,优化代码

        2. 栈内存溢出(StackOverFlow)

                -Xss

                1.方法调用栈过长

                2.线程数过多

        3.MetaSpace OOM

                1.加载的类过多

                解决方案:

                -XX:MaxMetaSpaceSize 扩大元数据区大小

        4.直接内存溢出

                dump文件不会有明显异常

                1.主要为native方法导致 、NIO 

                解决方案:

                        配置参数调整内存大小

        排查手段:

           1. 重启

           2.heap dump获取内存快照,通过分析工具,进行定位

事先开启HeadDumpOnOutOfMemoryError,这样出现OOM的时候能自动留下Dump,留好第一现场。这是最推荐的方式。
JVM的启动参数中加入如下的一些参数:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/usr/local/oom
第一个参数意思是在OOM的时候自动dump内存快照出来,第二个参数是说把内存快照存放在哪里

2.CPU占用过高

问题:

1. 多线程并发,数据密集型。

问题定位(死锁同理):

 top查看进程,jps查看进程对应的Java程序,(top -Hp 进程)查看进程下线程的情况,jstack+线程ID查看执行栈信息

http://www.lryc.cn/news/150881.html

相关文章:

  • 如何做好银行统一报送系统UI设计
  • 988. 从叶结点开始的最小字符串
  • RealSense D455启动教程
  • docker与phpstudy两种方式部署wordpress 并 开启伪静态
  • 网站搭建最简化的引导操作 | 云服务器的购买选用 | 域名的选用 | 网站的上线和备案。
  • Spring Cloud Foundry上使用通配符模式匹配进行的安全绕过漏洞 CVE-2023-20873
  • 简述SpringMVC
  • vue竖向步骤条
  • java八股文面试[多线程]——Synchronized优化手段:锁膨胀、锁消除、锁粗化和自适应自旋锁
  • 【数据结构】队列---C语言版(详解!!!)
  • java:详解http模块request对象
  • 力扣20. 有效的括号
  • 用springboot+elasticserach7的demo,对比sider和百度ai的异同
  • Python的pymysql模块与MySQL数据库的互动:基础与实例
  • 滑动窗口实例1(长度最小的子数组)
  • EI、Scopus双检索| 2023年第四届自动化、机械与设计工程国际会议
  • 【混合时变参数系统参数估计算法】使用范数总和正则化和期望最大化的混合时变参数系统参数估计算法(Matlab代码实现)
  • vue的公共方法封装以及class高阶封装
  • OpenGL-入门-BMP像素图glReadPixels(1)实现读取屏幕中间的颜色和获取屏幕上鼠标点击位置的颜色
  • 斥资4亿,收购这家WLAN厂商,结果……
  • 【简单】2511. 最多可以摧毁的敌人城堡数目
  • Linux用一键安装包部署禅道(18.5版本)
  • 【2】openGL shader着色器分析三角形填色
  • mysql数据表Table is marked as crashed and should be repaired 的解决办法
  • 【Unity基础】1.项目搭建与视图编辑
  • C语言每日一练---Day(14)
  • 基于孔雀算法优化的BP神经网络(预测应用) - 附代码
  • 【小沐学Unity3d】3ds Max 骨骼动画制作(蒙皮修改器skin)
  • 【Latex】使用技能站:(三)使用 Vscode 配置 LaTeX
  • 诗诺克科技引领数字资产智能交易革命