当前课程知识点:JAVA程序设计进阶 >  第六章 Java虚拟机 >  6.5 分代垃圾回收 >  Video

返回《JAVA程序设计进阶》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《JAVA程序设计进阶》慕课在线视频列表

Video课程教案、知识点、字幕

这一节我们将介绍

Java垃圾回收机制当中的

分代垃圾回收

在Java代码当中

Java语言并没有显式的提供

分配内存和删除内存的这个方法

那我们有一些开发人员

会将引用对象设置为空

他的目的是想说去释放一些内存

或者是调用这个system

这个类的gc方法来去释放内存

那调用

就是我们将引用对象设置为空

这种方式来去释放内存的话

应该没什么大问题

但如果我们要去释放

system gt方法的话

会大大的影响我们的系统性能

再Java当中我们开发人员

没有在代码中显式删除内存

所以大部分情况下

你要想进行垃圾回收的话

都是由我们的垃圾收集器

去自己主动的去发现这些垃圾

然后去删除然后释放内存

那所以这个我们分代垃圾收集器的话

它就是按照下面这种思想来去工作的

第一他认为绝大多数对象

在短时间内变得不可达

所谓变得不可达就是说

你很多对象就很短时间就没用了

你就会变成无用内存

然后第二个假设是说

只有少量年老对象

来去引用年轻的这个对象

所以这是分代垃圾

他提出的两个假设

那什么叫年轻代和老年代

这个年轻代指的是新创建的对象

都存放在这个区域

然后大多数对象

很快就变得不可达

所以大多数也是在年轻代中创建

然后消失

然后当对象从这个区域内消失的时候

那就可以称之为进行了minor GC

也就是进行了一次这个小的垃圾回收

那老年代指的是什么呢

说这个 致使那些

没有变得不可达的这些对象

它是存活下来的这个年轻对象

然后它被复制到这里

然后这块内存区域

一般它从存在时间上

都大于这个年轻代

因此它有更大的规模

然后这个垃圾回收所发生的次数

会比年轻代要少

如果当我们的对象

从这个老年代消失的时候

我们就说发生了major GC

也就是说一次比较完整的

这个垃圾回收的过程就发生了

那怎么去组织这个年轻代和老年代

实际上这里面也是涉及到一些

内存这个空间的策略问题

那目前的话

我们的年轻代

它就本身就分成了三块空间

第一块叫Eden区

Eden的话

实际上翻译成中文叫伊甸园

这应该是非常美好的一个区域

另外有两块

叫Survivor区

也就是幸存者区

那这三块区域的话

它是怎么个工作的呢

首先绝大多数新创建的对象

它都分配在伊甸园区

那如果我们的伊甸园区

发生了一次垃圾回收事件以后

还能存活下来的对象

我们就把它移到

两个幸存者区中的一个

那一旦这个幸存者区

假如已经存满了

那我们存活的对象

就被移动到另外一个

这个幸存者区

然后之前那个空间已满的

这个幸存者区的话

它就会被置为空

没有任何数据

如果经过这么多次的这样的

重复的步骤以后

依然还有能够存活下来的对象

那它就被移到老年区

所以这个年轻代的话

它是通过这三个区域的这种分配

以及相互的工作来去组成

它的一个这个工作的秩序

那关于我们的垃圾回收的

这些基本的这个原理

我们这一节就介绍到这里

JAVA程序设计进阶课程列表:

第一章 线程(上)

-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

第六章 Java虚拟机

-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

第七章 深入集合Collection

-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

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。