java stackoverflowerror与outofmemoryerror区别
1、stackoverflow:
每当java程序启动一个新的线程时,java虚拟机会为他分配一个栈,java栈以帧为单位保持线程运行状态;当线程调用一个方法是,jvm压入一个新的栈帧到这个线程的栈中,只要这个方法还没返回,这个栈帧就存在。
如果方法的嵌套调用层次太多(如递归调用),随着java栈中的帧的增多,最终导致这个线程的栈中的所有栈帧的大小的总和大于-Xss设置的值,而产生生StackOverflowError溢出异常。2、outofmemory:
2.1、栈内存溢出
java程序启动一个新线程时,没有足够的空间为改线程分配java栈,一个线程java栈的大小由-Xss设置决定;JVM则抛出OutOfMemoryError异常。
2.2、堆内存溢出
java堆用于存放对象的实例,当需要为对象的实例分配内存时,而堆的占用已经达到了设置的最大值(通过-Xmx)设置最大值,则抛出OutOfMemoryError异常。
2.3、方法区内存溢出
方法区用于存放java类的相关信息,如类名、访问修饰符、常量池、字段描述、方法描述等。在类加载器加载class文件到内存中的时候,JVM会提取其中的类信息,并将这些类信息放到方法区中。
当需要存储这些类信息,而方法区的内存占用又已经达到最大值(通过-XX:MaxPermSize);将会抛出OutOfMemoryError异常对于这种情况的测试,基本的思路是运行时产生大量的类去填满方法区,直到溢出。这里需要借助CGLib直接操作字节码运行时,生成了大量的动态类。
java stackoverflowerror与outofmemoryerror区别相关推荐
- StackOverflowError与OutOfMemoryError区别
在Java虚拟机规范中,定义了这么两种异常:StackOverflowError与OutOfMemoryError. 那么它们到底直接有啥区别呢? 在<The Java ® Virtual Ma ...
- Java中的OutOfMemoryError的各种情况及解决方法
转载自博客园:https://www.cnblogs.com/duanxz/p/4901437.html Java中的OutOfMemoryError的各种情况及解决和JVM内存结构 在JVM中内存一 ...
- 【JVM】StackOverflowError与OutOfMemoryError
· StackOverflowError与OutOfMemoryError是JVM中常见的有关内存的异常,需结合JVM来: · 在理解.区分这两个异常前,需要知道JVM中运行时数据区的结构:[见图1的 ...
- java 与 |与||的区别
java &与&& |与||的区别 一.与操作和或操作的区别 (1)在Java程序中,使用与操作,要求所有表达式的判断结果都是TRUE,才为真,若有一个为FALSE,那么最终判 ...
- java和C++的区别
JAVA和C++的区别介绍框架纲领如下: (一) 序言: (二) 我学习二者的个人感受: (三) 个人建议: (四) 用JAVA中继承的特性来描述C++和JAVA的关系图示: (五) JAVA和 ...
- float 与 double、隐式类型转换、switch、重写与重载、Java 与 C++ 的区别、JRE or JDK
1.float 与 double 1.1 字面量属于 double 类型,不能直接将 1.1 直接赋值给 float 变量,因为这是向下转型. // float f = 1.1; Java 不能隐式执 ...
- Java和OC的区别
Java和OC的区别 转载于:https://www.cnblogs.com/imChay/p/5591357.html
- kotlin和java差别_Kotlin和Java的常用方法的区别总结
一.kotlin和java的常用语法区别 1).类.public class.public final class java 1 2public final class User{ } 1 2publ ...
- Java中的OutOfMemoryError
转载自 Java中的OutOfMemoryError 引子:今天在<Sharding-JDBC官方群>里有个哥们称"不连sjdbc不会把内存吃光,连sjdbc跑一会就把内存吃光 ...
最新文章
- Android开发之GridView的使用(解读谷歌官方API)
- redis aof文件的格式 以及如何批量写入大量redis数据
- php图片截取后缀,PHP抓取远程图片(含不带后缀的)教程详解
- Ubuntu如何卸载安装的软件以FileZilla为例
- BlazeDS入门教程-很详细-赞原创作者一个
- Gojs学习史(一):基本定义
- 【转载】JS中bind方法与函数柯里化
- [转载] python中svm的使用_Python中支持向量机SVM的使用方法详解
- Silverlight+WCF 新手实例 象棋 介绍II(九)
- 2. Android Basic 搭建Android开发环境
- MySQL安装之后如何启动
- 澳门中区停电2小时影响396户 1人困电梯后获救
- Php 生成随机字符串函数集成
- jenkins AWS CodeDeploy不停机部署
- 离职 需要注意三个问题
- pip安装.whl文件
- Privacy Amplification by Decentralization
- Git detached HEAD解决方案_张童瑶的博客
- Web前端面试指导(一):写好简历是面试成功的第一步
- 8K视频大?带你来算算