首页 > 其他 > 详细

JVM | 内存溢出

时间:2020-03-24 19:48:45      阅读:71      评论:0      收藏:0      [点我收藏+]

JVM | 内存溢出

1. 导致内存溢出的原因

通常在三个地方会发生内存溢出:
metaspace空间内存溢出
栈内存溢出
堆内存溢出

1-1. metaspace空间内存溢出

  • metaspace默认大小为
    -XX:MetaspaceSize=512M
    -XX:MaxMetaspaceSize=512M

1-1-1. metaspace内存溢出的原因

  • metaspace空间太小
    没有设置metaspace参数,使用了默认的值,而默认值只有
  • 动态代理生成的类太多了,而没有正确的释放掉这些类

1-1-2. 使用代码模拟metaspace内存溢出场景

1-2. 栈内存溢出

  • 手动设置每个线程的虚拟机栈的大小,一般设置成1M
  • 通常情况下,正常的方法调用,1M的栈内存足够了,但是如果在一个线程内递归调用一个方法,就可能造成栈内存溢出了

1-3. 堆内存溢出

实际上最容易引发内存溢出的,就是系统创建的对象太多了,最终导致系统的内存溢出

1-3-1. 什么时候会发生堆内存的溢出

JVM | 内存溢出

原文:https://www.cnblogs.com/Serenity1994/p/12561183.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!