美文网首页
Java之OOM

Java之OOM

作者: Jason_Sam | 来源:发表于2019-05-22 21:26 被阅读0次

1. 堆内存不足是最常见的 OOM 原因之一,抛出的错误信息是“java.lang.OutOfMemoryError:Java heap space”,原因可能千奇百怪,例如,可能存在内存泄漏问题;也很有可能就是堆的大小不合理,比如我们要处理比较可观的数据量,但是没有显式指定 JVM 堆大小或者指定数值偏小;或者出现 JVM 处理引用不及时,导致堆积起来,内存无法释放等。

2. 而对于 Java 虚拟机栈和本地方法栈,这里要稍微复杂一点。如果我们写一段程序不断的进行递归调用,而且没有退出条件,就会导致不断地进行压栈。类似这种情况,JVM 实际会抛出 StackOverFlowError;当然,如果 JVM 试图去扩展栈空间的的时候失败,则会抛出 OutOfMemoryError。

3. 对于老版本的 Oracle JDK,因为永久代的大小是有限的,并且 JVM 对永久代垃圾回收(如,常量池回收、卸载不再需要的类型)非常不积极,所以当我们不断添加新类型的时候,永久代出现 OutOfMemoryError 也非常多见,尤其是在运行时存在大量动态类型生成的场合;类似 Intern 字符串缓存占用太多空间,也会导致 OOM 问题。对应的异常信息,会标记出来和永久代相关:“java.lang.OutOfMemoryError: PermGen space”。

3. 随着元数据区的引入,方法区内存已经不再那么窘迫,所以相应的 OOM 有所改观,出现 OOM,异常信息则变成了:“java.lang.OutOfMemoryError: Metaspace”。

4. 直接内存不足,也会导致 OOM。

相关文章

  • 对于OOM的理解

    OOM,即OutOfMemory,内存溢出 OOM之 Java heap spacejava堆内存溢出,一般由于内...

  • Java之OOM

    1. 堆内存不足是最常见的 OOM 原因之一,抛出的错误信息是“java.lang.OutOfMemoryErro...

  • OOM常见错误

    OOM是常见的java错误,OOM主要有: 1.OOM fo heapjava.lang:OutOfMemoryE...

  • java基础之OOM

    生活中的美酒, 线上的OOM, 今天我们分析下常见的java 内存溢出和解决办法. 结合其他大神的笔记, 自己记录...

  • Java服务,内存OOM问题如何快速定位

    Java服务,内存OOM问题如何快速定位 Java服务出现了OOM(Out Of Memory)问题,总结了一些相...

  • 内存溢出OOM和堆栈溢出SOF的示例

    1、Java堆溢出 (OOM) Java堆用于存储对象的实例,只要不断地创建对象,并且保证GC roots到对象之...

  • 一分钟,教你如何迅速定位OOM

    如何迅速定位OOM 某Java服务(假设PID=10765)出现了OOM,如何快速定位? OOM常见原因分析 Ja...

  • Java-OOM整理

    OOM整理 java.lang.OutOfMemoryError: Java heap spacememory l...

  • 试着搞懂OOM?

    "我的代码OOM了,怎么办?""报什么错?""OOM啊,java.lang.OutOfMemoryError""…...

  • 人工制造OOM问题并生成heapdump文件

    OOM,即out of memory异常。实际上,不仅java虚拟机堆会发生OOM,栈也会发生OOM,本文只讨论如...

网友评论

      本文标题:Java之OOM

      本文链接:https://www.haomeiwen.com/subject/biupzqtx.html