🌈hello,你好鸭,我是Ethan,西安电子科技大学大三在读,很高兴你能来阅读。
✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。
🏃人生之义,在于追求,不在成败,勤通大道。加油呀!
🔥个人主页:Ethan Yankang
🔥推荐:史上最强八股文||一分钟看完我的几百篇博客
🔥温馨提示:划到文末发现专栏彩蛋 点击这里直接传送
🔥本篇概览:详细讲解了《剑指JVM》——第19章7——类的使用与卸载——类装载子系统7🌈⭕🔥
【计算机领域一切迷惑的源头都是基本概念的模糊,算法除外】
🌈章节引出:
前一篇章:
🌈章节速览:
一、类的使用
任何一个类在使用之前都必须经历过完整的加载、链接和初始化3个步骤【不一定,因为初始化是有条件的】。一旦一个类成功经历这3个步骤之后,便“万事俱备,只欠东风”,就等着开发者使用了。开发人员可以在程序中访问和调用它的静态类成员信息(比如静态字段、静态方法等),或者使用 new关键字创建对象实例。
二、类的卸载
0.概述
和前面讲过对象的生命周期类似,对象在使用完以后会被垃圾收集器回收,那么对应的类、类的加载器、类在使用完成以后,也有可能被卸载掉。在了解类的卸载之前,需要先厘清类、类的Class对象和类的实例之间的引用关系。
1.类、类的加载器、类的Class对象、类的实例之间的引用关系
(1)类加载器和类的 Class 对象之间的关系。
在类加载器的内部实现中,用一个Java 集合来存放所加载类的引用
另外,一个Class对像总是会引用他的类加载器。调用Class 对象的 getClassLoader0方法,就能获得它的类加载器。由此可见,代表某个类的 Class 对象与该类的类加载器之间为双向关联关系】
(2)类、类的 Class 对象、类的实例对象之间的关系。
一个类的实例总是引用代表这个类的Class 对象。 Object 类中定义了 getClass() 方法,这个方法返回代表实例所属类的Class对象的引用。此外,所有的Java类都有一个静态属性class,它引用代表这个类的 Class 对象。
2.类的生命周期
当类被加载、链接和初始化后,它的生命周期就开始了,当代表类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期【前面的GC知识】,类在方法区内的数据也会被卸载,从而结束类的生命周期,一个类何时结束生命周期,取决于代表它的Class 对象何时结束生命周期。
3.案例[暂略]
自定义一个类加载器 MyClassLoader 加载自定义类 Order,那么就可以通过 Order 的 Class3.案例对象获取到对应的类加载器,再通过Order类的实例对象获取到类Class对象,如代码:
4.类的卸载
通过上面的案例可以知道当类对象没有引用时,可能会产生类的卸载,类的卸载需如下三个条件。
(1)该类所有的实例已经被回收。
(2)加载该类的类加载器的实例已经被回收。
(3)该类对应的 Class 对象没有任何对方被引用。
三、回顾:方法区的垃圾回收
方法区的垃圾收集主要回收两部分内容,分别是常量池中废弃的常量和不再使用的类。HotSpot虚拟机对常量池的回收策略是很明确的,只要常量池中的常量没有被任何地方引用,就可以被回收。
JVM 判定一个常量是否“废弃”还相对简单,而要判定一个类是否属于“不再被使用的类”的条件就比较苛刻了,需要同时满足下面三个条件:
(1)该类所有的实例都已经被回收。也就是Java堆中不存在该类及其任何派生子类的实例。
(2)加载该类的类加载器已经被回收。这个条件除非是经过精心设计的可替换类加载器的场景,如 OSGi、JSP的重加载等,否则通常是很难达成的。
(3)该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
上述三个条件并不是JVM 卸载无用类的必要条件,JVM可以卸载类也可以不卸载类,不会像对象那样没有引用就肯定回收。
💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖💖
热门专栏推荐
🌈🌈计算机科学入门系列 关注走一波💕💕
🌈🌈CSAPP深入理解计算机原理 关注走一波💕💕
🌈🌈微服务项目之黑马头条 关注走一波💕💕
🌈🌈redis深度项目之黑马点评 关注走一波💕💕
🌈🌈JAVA面试八股文系列专栏 关注走一波💕💕
🌈🌈JAVA基础试题集精讲 关注走一波💕💕
🌈🌈代码随想录精讲200题 关注走一波💕💕
总栏
🌈🌈JAVA基础要夯牢 关注走一波💕💕
🌈🌈JAVA后端技术栈 关注走一波💕💕
🌈🌈JAVA面试八股文 关注走一波💕💕
🌈🌈JAVA项目(含源码深度剖析) 关注走一波💕💕
🌈🌈计算机四件套 关注走一波💕💕
🌈🌈数据结构与算法 关注走一波💕💕
🌈🌈必知必会工具集 关注走一波💕💕
🌈🌈书籍网课笔记汇总 关注走一波💕💕
📣非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤收藏✅ 评论💬,大佬三连必回哦!thanks!!!
📚愿大家都能学有所得,功不唐捐!