摘要: 1.引用计数: 给每个对象定义一个变量,存储引用数。就是通过引用计数是否为0去判断是否清理。(如果为0就表示要执行) 2.可达性分析: 会记录对象的引用链(调用一个对象就会执行这个对象就是引用链,引用链就是可达性)。如果一个对象没有引用链,就证明这个对象没有使用,那么就会销毁。 阅读全文
posted @ 2021-02-16 15:04 冰红茶灬 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 就是垃圾对象 阅读全文
posted @ 2021-02-16 14:47 冰红茶灬 阅读(64) 评论(0) 推荐(0) 编辑
摘要: Java虚拟机栈,本地方法栈,程序计数器是不需要GC的,因为是线程私有的,线程私有的就会随着线程的产生而产生,随着线程的销毁而销毁。 堆和方法区需要GC及时清理运行过程中产生的垃圾。 阅读全文
posted @ 2021-02-16 14:44 冰红茶灬 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 内存的空间是有限的,那么在程序的运行时如何把不在使用的对象(垃圾对象)清除从而释放资源,这就是GC。 阅读全文
posted @ 2021-02-16 14:43 冰红茶灬 阅读(1044) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2021-02-16 14:41 冰红茶灬 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 全盘负责委托机制 假设有A类B类,A类中如果需要引用B类 A类是自定义类,所以jvm会使用系统类加载器加载A类。那么使用哪个加载器加载B类?先判断有没有指定类加载器加载去加载B类,如果没有,将使用A类 的加载器去加载B类,如果有就用指定的。如果没有会使用当前类的类加载器去加载关联类。 双亲委派机制 阅读全文
posted @ 2021-02-16 14:39 冰红茶灬 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 启动类加载器,扩展类加载器,系统类加载器 (继承关系) 系统类加载器继承扩展类加载器 扩展类加载器继承启动类加载器 爷爷:启动类加载器(C语言编写) 用来加载jre核心类库(rt.jar,charsets.jar等等...) 父亲:扩展类加载器(java语言) jre的扩展类库(ext目录) 儿子: 阅读全文
posted @ 2021-02-16 14:32 冰红茶灬 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 1.加载 将磁盘中的.class读取到内存中 2.连接 1.验证 验证.class文件是否正确 2.准备 给类的静态变量分配内存,并且给默认值(数据类型的默认值,如int默认值为0) 3.解析 将关联的类也装载到内存中(A类需要B类,所以也将B类装载到内存) 3.初始化 (比如int=5) 给静态变 阅读全文
posted @ 2021-02-16 14:25 冰红茶灬 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 1.类加载器 用来加载磁盘.class到jvm内存 2.运行时的数据区(JVM内存结构) 内存结构:不同数据存储到不同的区域 3.执行引擎 运行代码,输出执行结果 4.本地方法接口 5.本地方法库 阅读全文
posted @ 2021-02-16 14:05 冰红茶灬 阅读(49) 评论(0) 推荐(0) 编辑
摘要: jvm就是虚拟机,是java的运行环境,是一种能够运行.class文件的虚拟机。 阅读全文
posted @ 2021-02-16 13:56 冰红茶灬 阅读(188) 评论(0) 推荐(0) 编辑