JVM学习

JVM学习

JVM的构成

类加载器运行时数据区执行引擎本地方法接口

类加载的流程:
首先, 类加载器  会根据类的全限定名将类加载到  运行时数据区  的方法区内,我们常写的java代码是不能够被执行的,需要先编译成字节码,字节码是jvm可以识别的语言,不能被机器所执行,所以需要使用  执行引擎  将字节码编译成机器所能识别的语言,在执行的过程中再调用  本地方法接口  ,执行方法。

运行时数据区的构成

线程私有程序计数器(唯一一个没有OOM的区域)、虚拟机内存栈(也可以理解为线程栈)、本地方法栈
线程共享:堆、方法区(JDK8之后为元数据区)
程序计数器:存放着当前方法执行的位置,为多线程切换继续执行的时候使用。
虚拟机内存栈:线程的临时变量,以及需要执行代码的地址。
本地方法栈:本地方法接口。
堆:几乎所有new的对象都存放在堆里面。
方法区(元数据区):存放静态变量,静态代码块,类信息等数据。

堆的构成(hotspot)

YOUNG(新生代):OLD(老年代) = 1:2
YOUNG的构成:eden:st:sf = 8:1:1(不是严格的,大致等于)
新生代晋升老年代的条件

  • 大对象:大于新生代内存一半的对象直接进入老年代
  • 同一年龄的对象大小超过survivor的一半,大于等于这个年龄的对象直接晋升老年代;
  • 年龄超过15的对象(15可定义,不同的虚拟机不一样,最大为15,这个和对象头中的对象年龄存储的容量有关)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值