JVM面试

一、java内存模型(JMM)

1.1堆  -Xms Xms:初始堆大小  -Xmx:最大堆大小

1.2栈(栈帧  局部变量表、操作数栈、方法出口、动态链接)栈帧 线程

1.3方法区 (运行时常量池) 常量、静态变量、类的类型信息 JDK1.7使用了永久代实现了方法区

JDK1.8使用了元空间来存放方法区,这个区域垃圾回收针对的是常量池的回收和类型的卸载

1.4寄存器  线程私有

1.5直接内存  元空间使用的与对不相关的本地内存

1.6元空间  1.8方法区存放的地方

二、gc root 对象

1.虚拟机栈引用的对象

2.方法区常量引用的对象

3.方法区静态属性引用的对象

4.JVM虚拟机引用的对象(基本数据类型引用的class对象、系统类加载器)

5.同步锁持有多的对象

三、类的加载过程

1.加载

1.1 通过类的全限定名来获取定义的类的二进制字节流

1.2 根据二进制字节流所代表的静态存储结构转化为方法区的运行时数据结构

1.3 在内存中生成一个class对象,作为方法区的这个类入口

2.验证    确保class文件的字节流符合jvm规范的约束要求

2.1.文件格式验证

2.2.元数据验证

2.3 字节码验证

2.4 符号引用验证

3.准备   正式将静态变量分配内存并设置初始值
   

   public  static int value = 123; 

那变量准备阶段的初始值是0,123是在初始化阶段

4.解析

4.1类或者接口的解析

4.2方法的解析

4.3字段的解析

4.4接口方法的解析

5.初始化   执行类构造器clinit方法赋值,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值