摘要:
1.标记-标记清除算法,标记压缩算法,复制算法,分代收集算法。(JVM采用的是分代收集算法) 标记-清除算法 给每个对象存储一个标记位,记录对象的状态(死/活),两个阶段, 一.标记阶段:检查对象的标记位的状态,判断是否死亡。 二.清理阶段:将死亡的对象清理掉。 标记-压缩算法 是标记-清除算法的一 阅读全文
摘要:
GC做了什么事情? 清理对象,整理内存。 阅读全文
摘要:
1.手动调用System.gc()可以触发GC操作; 2.系统自动触发,内存不足时就会触发 阅读全文
摘要:
1.引用计数: 给每个对象定义一个变量,存储引用数。就是通过引用计数是否为0去判断是否清理。(如果为0就表示要执行) 2.可达性分析: 会记录对象的引用链(调用一个对象就会执行这个对象就是引用链,引用链就是可达性)。如果一个对象没有引用链,就证明这个对象没有使用,那么就会销毁。 阅读全文
摘要:
就是垃圾对象 阅读全文
摘要:
Java虚拟机栈,本地方法栈,程序计数器是不需要GC的,因为是线程私有的,线程私有的就会随着线程的产生而产生,随着线程的销毁而销毁。 堆和方法区需要GC及时清理运行过程中产生的垃圾。 阅读全文
摘要:
内存的空间是有限的,那么在程序的运行时如何把不在使用的对象(垃圾对象)清除从而释放资源,这就是GC。 阅读全文
摘要:
阅读全文
摘要:
全盘负责委托机制 假设有A类B类,A类中如果需要引用B类 A类是自定义类,所以jvm会使用系统类加载器加载A类。那么使用哪个加载器加载B类?先判断有没有指定类加载器加载去加载B类,如果没有,将使用A类 的加载器去加载B类,如果有就用指定的。如果没有会使用当前类的类加载器去加载关联类。 双亲委派机制 阅读全文
摘要:
启动类加载器,扩展类加载器,系统类加载器 (继承关系) 系统类加载器继承扩展类加载器 扩展类加载器继承启动类加载器 爷爷:启动类加载器(C语言编写) 用来加载jre核心类库(rt.jar,charsets.jar等等...) 父亲:扩展类加载器(java语言) jre的扩展类库(ext目录) 儿子: 阅读全文
摘要:
1.加载 将磁盘中的.class读取到内存中 2.连接 1.验证 验证.class文件是否正确 2.准备 给类的静态变量分配内存,并且给默认值(数据类型的默认值,如int默认值为0) 3.解析 将关联的类也装载到内存中(A类需要B类,所以也将B类装载到内存) 3.初始化 (比如int=5) 给静态变 阅读全文
摘要:
1.类加载器 用来加载磁盘.class到jvm内存 2.运行时的数据区(JVM内存结构) 内存结构:不同数据存储到不同的区域 3.执行引擎 运行代码,输出执行结果 4.本地方法接口 5.本地方法库 阅读全文
摘要:
jvm就是虚拟机,是java的运行环境,是一种能够运行.class文件的虚拟机。 阅读全文