JVM虚拟机的学习笔记三(OutOfMemoryError异常)
引发OOM异常的原因
如果线程请求的栈深度大于虚拟机所允许的深度,将抛出
如果java虚拟机栈可以动态拓展,并且在尝试拓展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的虚拟机栈,那java虚拟机将会抛出一个 OutOfMemoryError异常;
如果在Java堆中没有内存完成实例分配,并且堆也无法再扩展时,Java虚拟机将会抛出OutOfMemoryError异常;
如果方法区无法满足新的内存分配需求时,将抛出OutOfMemoryError异常;
直接内存,不是虚拟机运行时的一部分,可以直接访问堆外的内存;所以当内存空间无法动态扩展的时候就会出现OutOfMemoryError异常。

浙公网安备 33010602011771号