jvm

在这里插入图片描述
在这里插入图片描述

JVM体系结构

在这里插入图片描述
在这里插入图片描述

类加载器:
在这里插入图片描述

package com.hzx;

public class Student {
// 双亲委派机制:安全
// 先去 App -> EXT -> BOOT(最终)
// 如果不在 APP -> EXT -> BOOT中
// 会使用本地创建的
public String toString() {
return “hello”;
}

public static void main(String[] args) {
    Student student = new Student();
    System.out.println(student.toString());
    System.out.println(student.getClass().getClassLoader()); //AppClassLoader
    System.out.println(student.getClass().getClassLoader().getParent()); //PlatformClassLoader
    System.out.println(student.getClass().getClassLoader().getParent().getParent()); //null 1.不存在  2.java中获取不到,在C或者C++中

    /*
    *   1.类加载器收到类加载的请求
    *   2.将这个请求向上委托给父类加载器去完成,一直向上,直到启动类加载器
    *   3.启动类加载器检查是否能够加载当前这个类,找到就结束。 如果找不到,向下委托,一步一步找到(本地委托)
    *   4.重复步骤3
    * */
}

}

在这里插入图片描述

堆:Heap

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

GC:
在这里插入图片描述
在这里插入图片描述

复制算法:
在这里插入图片描述
在这里插入图片描述

优点:没有内存碎片
缺点:浪费了内存空间,多了一半空间永远是to,假设对象100%存活(极端情况下)
复制算法引用场景:对象的存活度较低: 新生区

标记压缩清除算法:
在这里插入图片描述

优点:
缺点:

JMM:
在这里插入图片描述
在这里插入图片描述

关于主内存与工作内存之间的具体交互协议,即一个变量如何从主内存拷贝到工作内存,如何从工作内存同步回主内存子类的细节实现,java内存模型定义了八种操作:(这八个操作都具有原子性)
lock(锁定):作用于主内存的变量,把一个变量标识为一条线程独占的状态。
unclock(解锁):作用于主内存的变量,把一个处于锁定的状态释放出来。
read(读取):作用于主内存的变量,把一个变量的值从主内存传输到线程的工作内存中
load(载入):作用于工作内存的变量,把read操作从主内存 得到的变量值放入工作内存的变量副本中。
use(使用):作用于工作内存的变量,把工作内存中一个变量的值传递给执行引擎,每当虚拟机遇到一个需要使用到变量的 值的字节码指令时将会执行这个操作。
assign(赋值):作用于工作内存的变量,把一个从执行引擎接收到的值 赋值给工作内存的变量,每当虚拟机遇到一个给变 量赋值的字节码指令时执行这个操作。
store(存储):作用于工作内存的变量,把工作内存中的一个变量的值传递到主内存,以便write操作使用。
write(写入):作用于主内存的变量,把store操作从工作内存中得到的变量的值放入主内存的变量中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值