当前课程知识点:JAVA程序设计进阶 > 第六章 Java虚拟机 > 6.5 分代垃圾回收 > Video
这一节我们将介绍
Java垃圾回收机制当中的
分代垃圾回收
在Java代码当中
Java语言并没有显式的提供
分配内存和删除内存的这个方法
那我们有一些开发人员
会将引用对象设置为空
他的目的是想说去释放一些内存
或者是调用这个system
这个类的gc方法来去释放内存
那调用
就是我们将引用对象设置为空
这种方式来去释放内存的话
应该没什么大问题
但如果我们要去释放
system gt方法的话
会大大的影响我们的系统性能
再Java当中我们开发人员
没有在代码中显式删除内存
所以大部分情况下
你要想进行垃圾回收的话
都是由我们的垃圾收集器
去自己主动的去发现这些垃圾
然后去删除然后释放内存
那所以这个我们分代垃圾收集器的话
它就是按照下面这种思想来去工作的
第一他认为绝大多数对象
在短时间内变得不可达
所谓变得不可达就是说
你很多对象就很短时间就没用了
你就会变成无用内存
然后第二个假设是说
只有少量年老对象
来去引用年轻的这个对象
所以这是分代垃圾
他提出的两个假设
那什么叫年轻代和老年代
这个年轻代指的是新创建的对象
都存放在这个区域
然后大多数对象
很快就变得不可达
所以大多数也是在年轻代中创建
然后消失
然后当对象从这个区域内消失的时候
那就可以称之为进行了minor GC
也就是进行了一次这个小的垃圾回收
那老年代指的是什么呢
说这个 致使那些
没有变得不可达的这些对象
它是存活下来的这个年轻对象
然后它被复制到这里
然后这块内存区域
一般它从存在时间上
都大于这个年轻代
因此它有更大的规模
然后这个垃圾回收所发生的次数
会比年轻代要少
如果当我们的对象
从这个老年代消失的时候
我们就说发生了major GC
也就是说一次比较完整的
这个垃圾回收的过程就发生了
那怎么去组织这个年轻代和老年代
实际上这里面也是涉及到一些
内存这个空间的策略问题
那目前的话
我们的年轻代
它就本身就分成了三块空间
第一块叫Eden区
Eden的话
实际上翻译成中文叫伊甸园
这应该是非常美好的一个区域
另外有两块
叫Survivor区
也就是幸存者区
那这三块区域的话
它是怎么个工作的呢
首先绝大多数新创建的对象
它都分配在伊甸园区
那如果我们的伊甸园区
发生了一次垃圾回收事件以后
还能存活下来的对象
我们就把它移到
两个幸存者区中的一个
那一旦这个幸存者区
假如已经存满了
那我们存活的对象
就被移动到另外一个
这个幸存者区
然后之前那个空间已满的
这个幸存者区的话
它就会被置为空
没有任何数据
如果经过这么多次的这样的
重复的步骤以后
依然还有能够存活下来的对象
那它就被移到老年区
所以这个年轻代的话
它是通过这三个区域的这种分配
以及相互的工作来去组成
它的一个这个工作的秩序
那关于我们的垃圾回收的
这些基本的这个原理
我们这一节就介绍到这里
-1.0 导学
--Video
-1.1 线程的基本概念
--Video
-1.1 线程的基本概念--作业
-1.2 通过Thread类创建线程
--Video
-1.2 通过Thread类创建线程--作业
-1.3 线程的休眠
--Video
-1.3 线程的休眠--作业
-1.4 Thread类详解
--Video
-1.5 通过Runnable接口创建线程
--Video
-1.5 通过Runnable接口创建线程--作业
-1.6 线程内部的数据共享
--Video
-2.0 导学
--Video
-2.1 线程同步的思路
--Video
-2.2 线程同步的实现方式—Synchronization
--Video
-2.3 线程的等待与唤醒
--Video
-2.4 后台进程
--Video
-2.5 线程的生命周期与死锁
--Video
-2.6 线程的调度
--Video
-3.0 导学
--Video
-3.1 线程安全与线程兼容与对立
--Video
-3.2 线程的安全实现-互斥同步
--Video
-3.3 线程的安全实现-非阻塞同步
--Video
-3.4 线程的安全实现-无同步方案
--Video
-3.5 锁优化
--Video
-4.0 导学
--Video
-4.1 URL对象
--Video
-4.2 URLConnection对象
--Video
-4.3 Get请求与Post请求
--Video
-4.4 Socket通信原理
--Video
-4.5 Socket通信实现
--Video
-5.0 导学
--Video
-5.1 Socket 多客户端通信实现
--Video
-5.2 数据报通信
--Video
-5.3 使用数据报进行广播通信
--Video
-5.4 网络聊天程序
--Video
-6.0 导学
--Video
-6.1 Java虚拟机概念
--Video
-6.2 Java虚拟机内存划分
--Video
-6.3 Java虚拟机类加载机制
--Video
-6.4 判断对象是否存活算法及对象引用
--Video
-6.5 分代垃圾回收
--Video
-6.6 典型的垃圾收集算法
--Video
-6.7典型的垃圾收集器
--Video
-7.0 导学
--Video
-7.1 集合框架与ArrayList
--Video
-7.2 LinkedList
--Video
-7.3 HashMap与HashTable
--Video
-7.4 TreeMap与LinkedHashMap
--Video
-7.5 HashSet
--Video
-8.0 导学
--Video
-8.1 Java反射机制
--Video
-8.2 Java静态代理
--Video
-8.3 Java动态代理
--Video
-8.4 Java 反射扩展-jvm加载类原理
--Video
-8.5 Java进阶课程总结
--Video