Java的OutOfMemoryError和StackOverflowError

简介: Java的OutOfMemoryError和StackOverflowError Java Virtual Machine定义了两种异常:OutOfMemoryError与StackOverflowError。

Java的OutOfMemoryError和StackOverflowError

 

Java Virtual Machine定义了两种异常:OutOfMemoryError与StackOverflowError。

OutOfMemoryError:Java启动一个线程时,JVM没有足够的内存空间为该线程分配Java栈,JVM抛出OutOfMemoryError异常。

StackOverflowError:Java启动一个线程时,JVM为它分配一个栈,Java栈以帧为单位保持线程运行状态,当线程调用一个方法时,JVM压入一个新的栈帧到这个线程的栈中,只要这个方法没返回,这个栈帧就存在。如果方法的嵌套调用深度太深(如深度很深的递归),随着Java栈中的帧增多,最终导致线程的栈中的所有栈帧的大小总和大于-Xss设定的值,即产生StackOverflowError,栈溢出异常。

“ If the computation in a thread requires alarger native method stack than is permitted, the Java Virtual Machine throws aStackOverflowError . ”

 

相关文章
|
6月前
|
存储 算法 安全
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
82 0
|
6月前
|
存储 缓存 监控
Java面试题:解释堆和栈的OutOfMemoryError通常在什么情况下会发生
Java面试题:解释堆和栈的OutOfMemoryError通常在什么情况下会发生
56 3
|
6月前
|
Java
idea启动java服务报错OutOfMemoryError: GC overhead limit exceeded解决方法
idea启动java服务报错OutOfMemoryError: GC overhead limit exceeded解决方法
1070 0
|
8月前
|
Java
IDEA云行项目提示Error: java: OutOfMemoryError
IDEA云行项目提示Error: java: OutOfMemoryError
|
8月前
|
Java
【Java报错】记录一次调用递归方法导致的 StackOverFlowError 及如何重构递归代码避免栈溢出
【Java报错】记录一次调用递归方法导致的 StackOverFlowError 及如何重构递归代码避免栈溢出
78 0
|
Java
Java内存溢出OutOfMemoryError的产生与排查
在java的虚拟机异常中,有两个异常是大家比较关心的,一个是StackOverflowError,另一个是OutOfMemoryError。今天我们就来看看OutOfMemoryError是怎么产生的,以及如何去排查这个异常。
783 0
Java内存溢出OutOfMemoryError的产生与排查
|
Java
Java_异常_05_ OutOfMemoryError: Java heap space
一、异常现象:   二、异常原因 JAVA的堆栈设置太小 注: 出现此异常之后,会引发其他的问题。   三、异常解决 手动设置Heap size: 修改 TOMCAT_HOME/bin/catalina.
1157 0
|
Java
Java_异常_04_ OutOfMemoryError系列
二、参考资料 1.铁猫 OutOfMemoryError系列(1): Java heap space OutOfMemoryError系列(2): GC overhead limit exceeded OutOfMemoryError系列(3): Permgen space OutOfMemor...
1066 0
|
Java
OutOfMemoryError系列(1): Java heap space
这是本系列的第一篇文章, 相关文章列表: OutOfMemoryError系列(1): Java heap space OutOfMemoryError系列(2): GC overhead limit exceeded OutOfMemoryError系列(3): Permgen space OutOfMemoryError系列(4): Metaspace 每个Java程序都只能使用一定量的内存, 这种限制是由JVM的启动参数决定的。
1300 0