JVM之OutOfMemoryError

来源:互联网 发布:宝信软件股份有限公司 编辑:程序博客网 时间:2024/06/05 03:39

OutOfMemoryError类加载:这个类在JVM启动的时候就已经被加载了,而不是在第一次使用时才被加载,可以通过java -verbose:class -version查看JVM是否加载了该类。

何时抛出OutOfMemoryError:先尝试内存分配,内存不足则GC,GC之后还是内存不足则抛出OOM。
  以堆内存分配为例:正确情况下对象创建需要分配的内存是来自于Heap的Eden区域里,当Eden内存不够用的时候,会触发一次YGC(某些情况下会尝试到Old里进行分配,比如说要分配的内存很大),YGC完成之后会再次尝试分配,如果仍不足以分配此时的内存,则会进行一次FGC(不过此时的soft reference不会被强制回收),将老生代也回收一下,接着再做一次分配,仍然不够分配那会做一次强制将soft reference也回收的full gc,如果还是不能分配,那这个时候就不得不抛出OutOfMemoryError了。

如何分析OutOfMemoryError异常:待补充

原创粉丝点击