JVM知识点

jvm模型

在这里插入图片描述
保存在着被加载过的每一个类的信息(虚拟机加载的类信息(类的版本、字段、方法、接口),常量,静态变量,即时编译器编译后的代码等数据);这些信息由类加载器在加载类的时候,从类的源文件中抽取出来;static变量信息也保存在方法区中。
可以看做是将类(Class)的元数据,保存在方法区里。
方法区逻辑上属于堆的一部分,但是为了与堆进行区分,通常又叫“非堆”。

5大区存放内容以及特性

区域线程是否私有存放内容
共享对象实例
方法区共享类信息,常量,静态变量等
本地方法栈私有Native
虚拟机栈私有每个方法在执行的时候也会创建一个栈帧,
程序计数器私有当前正在执行的字节码的行号

java对象生命周期

@startuml
'https://plantuml.com/activity-diagram-beta

start

:创建;
note right
    new Object()
end note
:使用;
:不可见;
    note right
        {
            Object t = new Object()
        }
        while(true){...}
        // 虽然t已经超出访问范围 但死循环导致同处于相同栈帧的对象t无法被回收
    end note
:不可达;
    note right
        Dog dog = new Dog(); //line 1
        dog = null; //line 2
    end note
    
:回收;
    note right
        当不可达阶段(unreachable)的对象被GC识别后会进入回收阶段(collected),
        这是重新分配前的阶段。如果对象定义了finalize方法,要将释放内存的操作放在
        finalize 方法之前。
    end note
:终结;
    note right
    当对象的finalized方法执行后仍处于unreachable状态,就进入最终状态,等待GC
    执行垃圾回收。
    end note
:对象空间再分配;
stop
@enduml

在这里插入图片描述

jvm分代GC

@startuml
'https://plantuml.com/activity-diagram-beta

start

:新对象进入Eden区;

 repeat
    :Minor GC ;
    note right
            eden、from survivor、to survivor(8:1:1)
            新生代这样划分是为了更好的管理堆内存中的对象,
            方便GC算法---复制算法来进行垃圾回收,(Minor GC)频繁。
    end note
    fork
        :Eden区检查;
        if (存活) then (true)
            :进入to区;
        else
            :回收;
            stop
        endif
    fork again
        :From区检查;
        if (存活) then (true)
            :进入to区;
            :年龄+1;
        else
            :回收;
        stop
        endif
    fork again
            :To区检查;
            if (存活) then (true)
                :进入From区;
                :年龄+1;
            else
                :回收;
            stop
            endif
    end fork
 while (年龄 < max)
 :进入Old区;

     note right
           标记--整理算法
     end note
stop
@enduml

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值