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 虚拟机规范对于运行时数据区域的规定是相当宽松的。以
88
88
89
89
Java 方法有两种返回方式,一种是 return 语句正常返回,一种是抛出异常。不管哪种返回方式,都会导致栈帧被弹出。也就是说, ** 栈帧随着方法调用而创建,随着方法结束而销毁。无论方法正常完成还是异常完成都算作方法结束。**
90
90
91
- 除了 ` StackOverFlowError ` 错误之外,栈还可能会出现` OutOfMemoryError ` 错误,这是因为如果栈的内存大小可以动态扩展, 如果虚拟机在动态扩展栈时无法申请到足够的内存空间 ,则抛出` OutOfMemoryError ` 异常。
91
+ 除了 ` StackOverFlowError ` 错误之外,栈还可能会出现` OutOfMemoryError ` 错误,这是因为如果栈的内存大小可以动态扩展, 那么当虚拟机在动态扩展栈时无法申请到足够的内存空间 ,则抛出` OutOfMemoryError ` 异常。
92
92
93
93
简单总结一下程序运行中栈可能会出现两种错误:
94
94
95
- - ** ` StackOverFlowError ` :** 若栈的内存大小不允许动态扩展 ,那么当线程请求栈的深度超过当前 Java 虚拟机栈的最大深度的时候,就抛出 ` StackOverFlowError ` 错误。
96
- - ** ` OutOfMemoryError ` :** 如果栈的内存大小可以动态扩展, 如果虚拟机在动态扩展栈时无法申请到足够的内存空间 ,则抛出` OutOfMemoryError ` 异常。
95
+ - ** ` StackOverFlowError ` :** 如果栈的内存大小不允许动态扩展 ,那么当线程请求栈的深度超过当前 Java 虚拟机栈的最大深度的时候,就抛出 ` StackOverFlowError ` 错误。
96
+ - ** ` OutOfMemoryError ` :** 如果栈的内存大小可以动态扩展, 那么当虚拟机在动态扩展栈时无法申请到足够的内存空间 ,则抛出` OutOfMemoryError ` 异常。
97
97
98
98
![ ] ( 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 )
99
99
You can’t perform that action at this time.
0 commit comments