当前课程知识点:JAVA程序设计进阶 >  第六章 Java虚拟机 >  6.7典型的垃圾收集器 >  Video

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

Video在线视频

Video

下一节:Video

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

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

这一节我们来介绍

几个典型的垃圾收集器

首先我们看到的是

Serial和Serial Old这个收集器

它是最基本最古老的收集器

然后它是一个单线程的收集器

在它进行垃圾收集时

必须暂停所有用户的线程

非常类似于我们垃圾车

比如我们日常生活

有时候垃圾车到出来工作的时候

可能有些我们一些地区的话

就是你正常的行驶你就做不了

你就只能等到它把这个地方

给你这个打扫干净

那Serial收集器

是针对新生代收集器

采用的是这种复制的这种算法

而Serial Old收集器

主要是针对老年代的收集器

采用的是这个

Mark-Compact算法

那它的优点的话是简单高效

缺点的话就是给用户带来停顿

也就是说它收集垃圾的时候

你的Java程序你就执行不了了

那这种情况有时候

也是比较招人讨厌对不对

那另外一个垃圾收集器

叫这个ParNew

实际上ParNew收集器

是Serial收集器的多线程版本

其实可能也应该称之为ParNew

它可以使用多个线程

来进行垃圾的这个收集

再下一个这个垃圾收集器

叫Parallel Scavenge

那这个收集器

它是一个新生代的多线程收集器

它在回收期间有个很大的好处

它不需要暂停其它的用户线程

那它采用是Copying算法

那该收集器

与前两个收集器有所不同

它主要是为了达到

一个可控的一个吞吐量

那Parallel Old

是Parallel Scavenge收集器的

老年代版本 它使用多线程

和Mark-Compact算法来实现

那还有一个这个垃圾收集器

是叫CMS

就是Current Mark Sweep

那你从它的英文

字面意义上就知道

它就说当前我就要标记

我就要是也要清扫

所以这种收集器

是一种以获取最短回收

停顿时间为目标的收集器

那它是一种并发收集器

它采用的是Mark-Sweep算法

那还有一种收集器

叫G1收集器

那G1收集器是当今收集器技术

发展最前沿的成果

它主要是一款

面向服务端的应用的收集器

它能充分利用到

多CPU 多核的环境

因此它是一款

这个并行与并发收集器

而且它能够建立

可预测的停顿时间模型

那我们今天介绍这几种

这个垃圾收集器

一般说来它会影响到

我们程序执行一种这个性能

尤其是当你想编一些

对效率要求非常高的

这个Java程序的时候

比如说服务器端的

Java程序的时候

你有时候你会比较顾及

说这个Java虚拟机的

垃圾回收效率是不是足够那个

帮助你的程序的运行

那据我所知国内外

都有一些大公司

在他们的服务器端性质当中

重新改写了一些

关于Java虚拟机的

里面的垃圾回收的机制

就举一个例子来说

就跟双十一的时候

大家也知道都要上网上去购物

你像淘宝它的这个系统

肯定就会承受着

极大的这个用户购买商品的

点击的压力

那淘宝实际上它的很多后台系统

拿是拿Java写的

所以为了提高这个Java

在服务器端的这种

这个工作效率

那我听说他们也是

对于一些垃圾回收的

这些机制进行了改进

大家设想一下

你正在点这个一个购物车

要付款 要抢商品的时候

结果在后台我们的Java程序

这个Java虚拟机要求停顿一下

然后说它要进行一个垃圾回收

把这内存整理一下

那这时候你的

要抢购的这些商品

你有可能就抢购不着了

这样你心仪的东西就拿不到了

所以说我们这些Java当中的

很多的这些机制

会影响到我们的程序的正常运行

在一些性能要求

特别高的情况下的话

可能我们在服务器端

会对这些Java虚拟机

以及相应它的一些局部

做一些改进

那当然大部分情况下

你们作为学生的话

我们去用到的这个

Java的标准虚拟机的

垃圾回收机制这就足够好了

因为你们自己做的程序

并不一定有那么大的

性能上的一种要求

下面我们来总结一下

今天这一章的内容

今天我们首先介绍了

Java虚拟机的概念与用途

那Java虚拟机

是我们Java程序

得以运行的一个基础性的软件

在很多的计算机硬件

和操作系统上

都已经实现了我们的Java虚拟机

那Java虚拟机

正是我们的Java程序

得以实现跨平台这么的特点的

一个基础型的软件

那今天的话我们还介绍了

Java虚拟机的内存分配

与工作过程

Java虚拟机在运行的过程当中

需要我们在计算机上

分配固定的一块内存

然后在这个内存里面的话

还会分不同的区域

每个区域都要完成相应的功能

那今天我们已经介绍了

它总共五个区域的

不同的特点和功能

另外我们今天还介绍了

一个类文件

也就是说一个点class文件

如何被加载进虚拟机

然后经历着各种各样的生命周期

来完成它的使命的这么一个过程

那今天我们还介绍了

Java虚拟机当中

如何去进行内存垃圾回收的

一些算法和原理

还有实现这个Java虚拟机

回收的一些典型的回收器

那对于这个Java虚拟机

它的内存回收

是否需要进行改进的话

主要取决于你自己的程序

对于这种性能有多大的要求

一般而言现成的Java虚拟机

已经满足了在座各位的要求

除非是当你们编写一些

这个服务器端

性能要求非常高的

Java程序的时候

你就有可能去改进

你的Java虚拟机的

垃圾回收的机制

当然这种情况比较少见

那我们这一章的内容

就介绍到这里 谢谢大家

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笔记与讨论

也许你还感兴趣的课程:

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