File tree Expand file tree Collapse file tree 1 file changed +3
-3
lines changed
Expand file tree Collapse file tree 1 file changed +3
-3
lines changed Original file line number Diff line number Diff line change @@ -88,12 +88,12 @@ Java 虚拟机规范对于运行时数据区域的规定是相当宽松的。以
8888
8989Java 方法有两种返回方式,一种是 return 语句正常返回,一种是抛出异常。不管哪种返回方式,都会导致栈帧被弹出。也就是说, ** 栈帧随着方法调用而创建,随着方法结束而销毁。无论方法正常完成还是异常完成都算作方法结束。**
9090
91- 除了 ` StackOverFlowError ` 错误之外,栈还可能会出现` OutOfMemoryError ` 错误,这是因为如果栈的内存大小可以动态扩展, 如果虚拟机在动态扩展栈时无法申请到足够的内存空间 ,则抛出` OutOfMemoryError ` 异常。
91+ 除了 ` StackOverFlowError ` 错误之外,栈还可能会出现` OutOfMemoryError ` 错误,这是因为如果栈的内存大小可以动态扩展, 那么当虚拟机在动态扩展栈时无法申请到足够的内存空间 ,则抛出` OutOfMemoryError ` 异常。
9292
9393简单总结一下程序运行中栈可能会出现两种错误:
9494
95- - ** ` StackOverFlowError ` :** 若栈的内存大小不允许动态扩展 ,那么当线程请求栈的深度超过当前 Java 虚拟机栈的最大深度的时候,就抛出 ` StackOverFlowError ` 错误。
96- - ** ` OutOfMemoryError ` :** 如果栈的内存大小可以动态扩展, 如果虚拟机在动态扩展栈时无法申请到足够的内存空间 ,则抛出` OutOfMemoryError ` 异常。
95+ - ** ` StackOverFlowError ` :** 如果栈的内存大小不允许动态扩展 ,那么当线程请求栈的深度超过当前 Java 虚拟机栈的最大深度的时候,就抛出 ` StackOverFlowError ` 错误。
96+ - ** ` OutOfMemoryError ` :** 如果栈的内存大小可以动态扩展, 那么当虚拟机在动态扩展栈时无法申请到足够的内存空间 ,则抛出` OutOfMemoryError ` 异常。
9797
9898![ ] ( https://oss.javaguide.cn/github/javaguide/java/jvm/%E3%80%8A%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%99%9A%E6%8B%9F%E6%9C%BA%E3%80%8B%E7%AC%AC%E4%B8%89%E7%89%88%E7%9A%84%E7%AC%AC2%E7%AB%A0-%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%A0%88.png )
9999
You can’t perform that action at this time.
0 commit comments