JVM--1___java内存区域
2020-04-07 11:31:47 0 举报
jvm
作者其他创作
大纲/内容
虚拟机进程和用户线程,java虚拟机在执行java程序的时候把内存分为不同的区域
解决java堆中的内存溢出OutOfMemeoryError
基本都是采用指针引用方式
1.java堆所有线程共享、虚拟机启动时创建。2.所有的对象实例和数组都是存放在堆上(对象都分配在堆上不是绝对)3.GC堆,虚拟机主要内存会收区域:分代收集算法:新生代和老年代4.物理上不用连续,逻辑上连续就可以。也有OutOfMemoryError
对象类型数据:对象类型、父类、接口、方法等存储在方法区中
虚拟机栈VM stack
访问
1.线程私有,生命周期同线程相同,虚拟机栈描述的是java方法执行的内存模型2.每个方法有一个stack frame存储局部变量表、操作栈、动态连接、出口信息等等。方法的运行就是栈帧的入栈到出栈的过程3.局部变量表存放的是基本数据类型和对象引用reference4.线程请求的深度大于虚拟机所允许的深度:StackOverFlowError.虚拟机栈无法申请到需要的内存时:OutOfMemoryError
reference中存储的是句柄稳定的地址
栈中:reference
Object obj = new Object()
本地库接口
本地方法栈Native Method stack
堆中
减少一次指针定位速度更快
本地方法库
当前线程执行字节码指示器,只是当前程序执行的位置java虚拟机是通过线程轮流切换并分配处理器执行时间每条线程都是独立的程序计数器,是线程私有的span style=\
运行时数据区
1.线程共享,用于存储虚拟机加载的类信息、常量、静态变量、及时编译后的代码数据2.被认为是永久带,主要是正对常量池的回收和类型的卸载,方法区无法满足内存分配时:OutOfMemeoryError****运行时常量池:方法区的一部分span style=\
本地方法栈为虚拟机使用Native方法提供服务(同虚拟机栈)
堆Heap
执行引擎
方法区Method Area
程序计数器Program Couter Register
收藏
0 条评论
下一页