JVM

JVM(Java Virtual Machine):Java虚拟机

构成

JVM由五部分组成:方法区、堆、栈,本地方法栈和程序计数器。

方法区:存放类似于元数据信息方面的数据的,比如类信息,常量,静态变量等

堆:存放数据,比如对象实例,数组等。通过new创建的对象,都在堆上进行分配。

栈:代码运行空间,方法会在栈里运行。线程创建时创建,和线程的生命周期一致

程序计数器:类似于指针,指向正在执行的指令。

方法区和堆是现成共享的,其余三部分是线程独享的。

当多线程在堆上请求空间时,为了提高效率,采用TLAB(Thread Local Allocation Buffer)技术,即给每个线程分配一小块内存,用于该线程上的内存分配。当该线程内存分配不足时,当请求的内存低于threshold时,重新给线程分配一块空间,但是当高于threshold时,就直接在公共的堆空间分配,这就需要进行同步控制。

在这里插入图片描述

类加载

过程
一个类从被加载到JVM开始,到卸载出内存主要经过:加载,链接,初始化,使用,卸载。

类加载器:实现”通过一个类的全限定名来获取描述该类的二进制字节流“动作的代码,称为类加载器。

三层类加载器

  • 启动类加载器:主要加载<JAVA_HOME>\lib目录存放的类
  • 扩展类加载器:主要加载<JAVA_HOME>\lib/ext目录存放的类
  • 应用程序类加载器: 加载用户路径的类

三层类加载器+双亲委派模型

双亲委派模型的优点:避免重复加载 + 避免核心类篡改

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值