当前课程知识点:JAVA程序设计进阶 > 第六章 Java虚拟机 > 6.7典型的垃圾收集器 > 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虚拟机的
垃圾回收的机制
当然这种情况比较少见
那我们这一章的内容
就介绍到这里 谢谢大家
-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