目录
1.JVM简介
2.Java的类加载
?编辑??2.1类加载的基本流程
?编辑?2.2类加载过程中的双亲委派模型??编辑
?3.JVM之垃圾回收
前言:
?3.2垃圾回收的定义
3.3 java的垃圾回收要回收的内存是哪些
3.4 回收堆上的内存,主要是回收什么 ?
3.5 垃圾回收到底是咋回收的?
?编辑3.6如何来判断或者找垃圾
3.6.1引用计数
3.6.2 可达性分析
3.7在知道哪些对象是垃圾的基础上,怎么回收?
3.7.1垃圾回收之经典算法
a)标记-清除
b)复制算法
c)标记整理
1.JVM简介


? ?
2.Java的类加载
??2.1类加载的基本流程
? ?
看个例子:
?2.2类加载过程中的双亲委派模型?
?3.JVM之垃圾回收
前言:

?3.2垃圾回收的定义

3.3 java的垃圾回收要回收的内存是哪些
?
3.4 回收堆上的内存,主要是回收什么 ?

3.5 垃圾回收到底是咋回收的?
3.6如何来判断或者找垃圾
我们使用GC垃圾回收机制的话,有2种典型的方案
3.6.1引用计数

引用计数找垃圾的优缺点:

3.6.2 可达性分析
从一组初始的位置出发,向下进行深度遍历,把所有能够访问到的对象都标记成可达即可以被访问到,那不可达的对象就是垃圾。
?
总结:在Java中不管是引用计数还是可达性分析,判定原则其实都是看当前这个对象是否有引用来指向。是在通过引用来决定对象的生死。
3.7在知道哪些对象是垃圾的基础上,怎么回收?
3.7.1垃圾回收之经典算法
a)标记-清除

b)复制算法
?
c)标记整理
因此为了解决上面复制算法的内存空间利用率低的问题,我们使用标记整理
?
但是实际上我们实现的垃圾回收算法,要能够结合以上的三种方式。取长补短
?
?
?
?
|