JVM笔记1_java内存区域与溢出异常
来源:互联网 发布:软件日记 编辑:程序博客网 时间:2024/06/05 19:36
1,jvm的自动内存管理机制
2,jvm 运行时数据区域
jvm在执行java程序的过程中将其管理的内存划分为
方法区,存放已经被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。当方法区无法满足内存分配,爆出outofmemoryerror,
运行时 常量池是方法区的一部分,用于存放编译器生成的各种字面量的和符号引用。
具备动态性 的特征;运行区间也可以将新的常量放入池中,String intern();
l 堆:在虚拟机启动时创建,唯一目的存放对象实例,是垃圾收集器(一般采用分代收集算法)管理的主要区域,逻辑上那连续,物理上不一定连续。如果没有足够的内存完 成实例化分配,并且堆不可扩展,则outofmemoryerror
由所有的线程共享的数据区
虚拟机栈,描述的是java方法执行的内存模型:每个方法执行的时候都会创建一个stack Frame用于存储局部变量表,操作栈,动态链接,方法出口等信息。其中局部变量表
存放了编译期可知道的各种、基本数据类型,所需要的内存空间在编译期间已经分配完成,在方法运行期间不会改变局部变量表的大小。
如果线程请求的栈深度大于虚拟机允许的深度,stackoverflowerror
如果虚拟机栈在扩展申请不到足够的内存空间,outofmemoryerror
本地方法栈,虚拟机栈为执行java方法服务,本地方法栈为native方法服务。其他同虚拟机栈
程序计数器,一块较小的内存空间,当前线程所执行的字节码文件的行号指示器,多线程中每个线程在执行程序是都需要一个程序计数器来记录上次程序执行到的位置。
执行java方法,正在执行的java字节码指令的地址
执行native方法,则程序计数器为undefined.
唯一规定没有outofmemoryerror的内存区域。
线程隔离的数据区,
3,直接内存
4, 对象访问
Object obj =new Object();
java栈。堆
句柄:堆中划分出句柄池,reference对象中存储的就是对象的句柄地址,句柄中包含对象的实例数据和类型数据各自的地址。
直接指针:reference中直接存放的就是存储的对象地址。
5,各种outofmemoryerror
各个运行时数据区的存储数据类型
根据异常信息判断哪个区发生的异常
发生异常应该如何处理
5.1 Java heap space :
内存泄漏
内存溢出
5.2 stackoverflowerror
outofmemoryerror
5.3方法区溢出permgen space
5.4直接内存溢出。并没有真正分配内存,只是计算可得溢出。
- JVM笔记1_java内存区域与溢出异常
- JVM 学习笔记1 JAVA内存区域与溢出异常
- JVM内存区域与内存溢出异常
- JVM内存区域与内存溢出异常
- jvm(1)----java内存区域与内存溢出异常
- JVM学习笔记(1)--java内存区域与内存溢出异常
- JVM学习笔记(1)——Java内存区域与内存溢出异常
- jvm笔记1--Java内存区域与内存溢出
- 深入理解JVM笔记一-java内存区域与内存溢出异常
- 深入理解JVM虚拟机学习笔记(—)内存区域与内存溢出异常
- JVM学习笔记——Java内存区域与内存溢出异常
- JVM之Java内存区域与内存溢出异常
- JVM学习—内存方区域与内存溢出异常
- JVM--JAVA内存区域与内存溢出异常(未完)
- JVM-java内存区域与内存溢出异常
- jvm学习记录 -- Java内存区域与内存溢出异常
- Understand JVM:Java内存区域模型与内存溢出异常
- [JVM]Java内存区域与内存溢出异常
- 3幅图让你了解Spring AOP
- POJ
- 快速简单处理anr
- Spring data jpa 多表查询(三:多对多关系动态条件查询)
- ubuntu 14.04 登录黑屏和登录死循环
- JVM笔记1_java内存区域与溢出异常
- 扩展名的隐藏与显示
- soapui接口性能测试(三)---- 验证性能
- This support library should not use a different version(x)than the compileSdkVersion(y)
- lucene 4.10 检索mysql数据库
- JAVA设计模式之建造者模式
- 欢迎使用CSDN-markdown编辑器
- 启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法
- ubuntu 14.04 安装ROS 教程