JVM运行机制

JVM运行机制

首先要知道jvm是由五大部分组成,分别是类装载子系统,运行时数据区,执行引擎,本地方法接口和内存回收机制

  • 先是类装载子系统,它把所有引用到的类,接口以及包一起装载到文件下

  • 然后是最重要的运行时数据区
    :JVM由主方法入口执行程序,并将主方法压入java栈,并生成该方法相应的栈桢,然后由程序计数器提供的指令来一步步执行
    :执行中遇到调用java方法则将其压入java栈中,遇到变量赋值,就存储在局部变量表中,遇到表达式,则用操作数栈来进行运算,并将结果弹出栈返回,遇到调用其它类时,就用动态链接,遇到本地方法则调用本地方法栈,遇到常量对象时,将其分配到运行时常量池中,遇到实例化对象时,先获取方法区中的类信息,然后在堆当中给其分配相应的空间
    :堆当中,根据流行的分代GC算法,可以将其分为两部分:新生代和老年代
    :新生代又分为Eden,s1,s2,其中新对象一般都分配在Eden中,当Eden内存不足时,会触发MinorGC(清完无用对象后,把Eden和s1中幸存的对象复制到s2,s2放不下就放老年代,再清空二者,最后s1和s2互换),对象在s区中每度过一次GC年龄加1,到指定值时放入老年代(默认15岁)
    :老年代相对稳定,它在内存不足或无法给大对象分配连续空间时会触发Major GC(用标记-整理算法来清理内存,速度相对缓慢),当老年代内存还是不足时,会抛出outofmemory异常
    :永久代是用来存放clss和元数据的信息,且GC 不会在主程序运行期对永久区域进行清理
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值