Java内存溢出

堆栈溢出

    java.lang.stackOverFlowError,当前主线程方法的无条件递归调用,方法无法调出来,导致堆栈溢出错误;

内存溢出

  •     java.lang.outOfMemoryError: java heap space 

           java堆空间溢出,创建对象的内存大于堆内存,导致堆内存溢出;

  •   java.lang.outOfMemoryError:GC overhead limit exceeded

        GC回收时间过长报错,具体原因为,超过98%的时间来进行垃圾回收,并且回收了不到2%堆内存;CPU使用率过高,而垃圾回收却没有任何效果;

  • java.lang.outOfMemoryError:Direct buffer memory

      -XX:MaxDirectMemorySize=5m,可设置直接内存大小

      写NIO的程序的时候经常使用byteBuffer来读取或者写入数据,这是一种基于channel(通道)与缓冲区 (buffer)的I/O方式;

      byteBuffer.allocteDirect(capability),直接分配操作系统本地内存,不属于GC管辖范围,由于不需要内存拷贝因此速度相对较快;

      对象不断分配本地内存,而堆内存很少使用,GC不会回收DirectByteBuffer对象,当本地内存无法再继续分配,就会报该错误;

  • java.lang.outOfMemoryError:unble to  create new native thread

      高并发场景下,一个应用进程创建太多的线程,超出系统承载,降低线程数或扩大平台的最大线程默认限制;

  • java.lang.outOfMemoryError:MetaSpace

       java8中,metaSpace是方法区在hotspot的实现,元空间存储的类信息有:虚拟机加载的类对象信息;常量池,静态变量,及时编译后的代码;

      不断创建静态类对象,超出元空间内存大小;

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值