Java八股文四:Java虚拟机

本文详细介绍了Java虚拟机的内存结构,包括堆、栈、方法区(JDK1.8后为元空间)以及它们的作用。接着讲解了类加载机制,包括加载、链接、验证、准备和初始化阶段,以及双亲委派模型的工作原理。此外,文章还探讨了四种垃圾回收算法:标记-清除、复制、标记-整理和分代收集,以及CMS和G1两种典型的垃圾回收器的特性、工作流程和优缺点。最后,提到了GC Roots的四种情况。
摘要由CSDN通过智能技术生成

四、Java 虚拟机

1、Java 内存结构

image.png

  • 堆 由线程共享,存放 new 出来的对象,是垃圾回收器的主要工作区域。
  • 栈 线程私有,分为 Java 虚拟机栈和本地方法栈,存放局部变量表、操作栈、动态链接、方法出口等信息,方法的执行对应着入栈到出栈的过程。
  • 方法区 线程共享,存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等信息,JDK 1.8 中方法区被元空间取代,使用直接内存。
2、Java 类加载机制

image.png

  • 加载 加载字节码文件。
  • 链接
    • 验证 验证字节码文件的正确性。
    • 准备 为静态变量分配内存。
    • 解析 将符号引用(如类的全限定名)解析为直接引用(类在实际内存中的地址)。
  • 初始化 为静态变量赋初值。

双亲委派模式

当一个类需要加载时,判断当前类是否被加载过。已经被加载的类会直接返回,否则才会尝试加载。加载的时候,首先会把该请求委派该父类加载器的 lo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m78探索者

谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值