JVM哪些区域会发生内存溢出

1、MetaSpace区域会发生内存溢出

   第一种原因:上线的时候MetaSpace区域直接用默认的参数,即根本不设置其大小,这会导Meta

Space区域可能才几十M而已或者设置的比较小,此时对于一个稍微大型系统,因为他有很多自己的类,还依赖了很多外部jar包的类,MetaSpace空间很容易不够的。

  第二种原因:就是很多人开发系统代码都会用一些cglib之类的技术动态生成一些类,一旦代码没有控制好,导致生成的类过多的时候,就很容易MetaSpace给塞满,进而引起内存溢出。

2、每个线程的虚拟机栈会发生内存溢出

   大部分原因是方法的递归调用引起的

 3、堆内存会发生内存溢出

     一般来说发生内存溢出有两种主要的场景:

  1. 系统承载高并发请求,因为请求量过大,导致大量的对象都是存活的,所以要放入新的对象放不下了,此时就会引起内存溢出系统崩溃;
  2. 系统有泄漏的问题,就是莫名其妙产生了很多对象,结果对象都是存活的,没有及时取消他们的引用,导致触发GC还是无法回收,此时只能引发内存溢出,因为实在是放不下更多的对象了。

你的鼓励是我分享技术最大的动力!如有错误之处,请指正,不胜感激。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值