OOM和StackOverflow
时间: 2023-11-16 19:07:10 浏览: 40
OOM是指Out of Memory,即内存溢出。在Java中,当程序需要的内存超过了JVM分配给程序的内存限制时,就会发生OOM错误。一种常见的情况是堆内存溢出,当程序不断创建新对象占用堆内存时,如果堆内存的大小不够,就会导致OOM错误。引用中提到的方法区溢出也是一种OOM错误,当方法区的内存占用已经达到最大值时,进一步尝试存储类信息将导致溢出异常。
StackOverflow是指栈溢出错误。在Java中,每个线程都有一个与之关联的栈,栈以帧为单位保持线程运行状态。当一个线程调用一个方法时,JVM会将一个新的栈帧压入栈中,只有当方法返回后,该栈帧才会消失。如果方法的嵌套调用层次太多,导致栈中的帧数量超过了设置的栈大小(通过-Xss设置),就会发生StackOverflowError溢出异常。引用中解释了当方法的嵌套调用层次太多时,栈中的帧数量超过栈大小的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [StackOverflow和OOM的区别](https://blog.csdn.net/JAVA_I_want/article/details/103136271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]