JVM垃圾回收机制总结

JVM分为三个主要的子系统(1)类加载器子系统(2)运行时数据区(3)执行引擎1.类加载器子系统Java的动态类加载功能是由类加载器子系统处理。当它在运行时(不是编译时)首次引用一个类时,它加载、链接并初始化该类文件。1.1加载类由此组件加载,遵循委托层次算法加载类文件。启动类加载器:负责从启动类路径中加载类,rt.jar,优先级比较高 扩展类加载器:负责加载ext目...
摘要由CSDN通过智能技术生成

JVM分为三个主要的子系统

(1)类加载器子系统(2)运行时数据区(3)执行引擎

1.类加载器子系统

Java的动态类加载功能是由类加载器子系统处理。当它在运行时(不是编译时)首次引用一个类时,它加载、链接并初始化该类文件。

1.1加载

类由此组件加载,遵循委托层次算法加载类文件。

  • 启动类加载器:负责从启动类路径中加载类,rt.jar,优先级比较高
  • 扩展类加载器:负责加载ext目录(jre/lib)内的类
  • 应用程序类加载器:负责加载应用程序级别类路径,涉及到路径的环境变量等

1.2链接

  • 校验 – 字节码校验器会校验生成的字节码是否正确,如果校验失败,我们会得到校验错误
  • 准备 – 分配内存并初始化默认值给所有的静态变量。
  • 解析 – 所有符号内存引用方法区(Method Area)原始引用所替代。

1.3初始化

这是类加载的最后阶段,是所有的静态变量被赋初始值,并且静态块将被执行

1.4什么是类加载机制

Class文件描述的各种信息,都需要加载到虚拟机后才能运行。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

1.5双亲委派模型

双亲委派模型(Parents Delegation Model)要求除了顶层的启动类加载器外,其余加载器都应当有自己的父类加载器。类加载器之间的父子关系,通过组合关系复用。 
工作过程:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器完成。每个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有到父加载器反馈自己无法完成这个加载请求(它的搜索范围没有找到所需的类)时,子加载器才会尝试自己去加载。

2.运行时的数据区(Runtime Data Area)

线程共享的数据区是堆和方法区,其他的都是线程私有的数据区

2.1方法区(Method Area)

  • 所有类级别的数据将被存储在这里,在class被加载后的一些信息 如常量,静态常量这些被放在这里,在Hotspot里面我们将它称之为永生代。
  • 每个JVM只有一个方法区,它是一个共享的资源

2.2 堆区(Heap Area)

  • 他是最大的一块区域,用于
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值