首页 > 其他 > 详细

Jvm内存结构

时间:2018-12-24 15:19:25      阅读:146      评论:0      收藏:0      [点我收藏+]

 

 技术分享图片

 

Jvm的内存结构:

程序计数器:是JVM中一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过这个计数器的值来

选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理等(线程私有)

 

技术分享图片

 

虚拟机栈:虚拟机栈是指方法执行的内存模型,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数栈、动态连接、方法出口信息,

每一个方法从调用到执行完成的过程,就对应的栈帧的入栈和出栈

 局部变量表:存放了编译期的各种基本数据类型(boolean,byte,char,shor,int,float,double,long)、对象引用(可以是一个指向对象起始地址的引用指针,也可以是指向一个代表对象的句柄)

 

本地方法栈:本地方法栈与虚拟机栈作用类心,只是虚拟机栈为虚拟机执行java方法服务,而本地方法栈则为虚拟机使用到的Native方法服务

 

堆:堆是垃圾收集管理的主要区域,堆可以分为:新生代(Eden空间、From区、To区)和老年代(线程共享)

 

方法区:存储虚拟机加载的类信息、常量、静态变量等

 运行时常量沲(属于方法区):用于存放编译期生成的各种字面量和符号引用,这部份内容将在类加载后进方法区的运行时常量沲

 

对象的创建过程:

1、虚拟机遇到new指令,判断常量沲中是否有对应的符号引用,检查这个符号引用代表的类是否被加载、链接、初始化,如果没有就必须进行类的加载过程

2、类加载检查后,需要进行对象的内存分配,内存分配有两种方式:

指针碰撞(新生代,复制算法 serial、ParNew)

 

空闲列表(老年代,CMS ,serial old)

Jvm内存结构

原文:https://www.cnblogs.com/xyz-star/p/10168291.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!