常见的OOM异常

  • Java.lang.StackOverFlowError
    • 虚拟机栈溢出
  • java.lang.OutOfMemoryError: java heap space
    • 堆区 内存溢出
  • java.lang.OutOfMemoryError: GC overhead limit exceeded
    • 大量资源都用于GC回收了,每次GC后也清理不了多少空间,反复如此,就抛出此错误
  • java.lang.OutOfMemoryError: Direct buffer memory
    • 写NIO程序经常使用ByteBuffer来读取或者写入数据,这是一种基于通道-channel 与 缓冲区-buffer的I/O方式
    • 他可以使用Native函数库直接分配堆外内存,然后通过一个存储在java堆里面的DirectByteBuffer对象作为这块内存的引用进行操作
    • 这样能在一些场景中显著提高性能,因为避免了java堆和Native堆中来回的复制数据
    • 当堆外内存(本地内存)不够用时,就会抛出此异常
  • java.lang.OutOfMemoryError: unable to create new native thread
    • 应用创建了太多线程了,超过系统承载
    • 你的服务器不允许创建过多的线程
  • java.lang.OutOfMemoryError: Metaspace
    • 元空间内存溢出
    • 元空间使用的是本地内存,类信息创建太多
posted @ 2023-04-08 14:29  李勇888  阅读(19)  评论(0编辑  收藏  举报