java面试一日一题:再谈垃圾回收器中的串行、并行、并发
问题:请讲下java中垃圾回收器的串行、并行、并发
分析:该问题主要考察在垃圾回收过程中垃圾回收线程和用户线程的关系
回答要点:
主要从以下几点去考虑,
1、串行、并行、并发的概念
2、如何考虑串行、并行、并发的这种关系
计算机执行程序实际是在CPU上执行,由于在计算机上会存在多个程序,也就是多个进程,每个进程中又存在多个线程,线程作为CPU执行的最小单位,是通过争夺CPU时间片的方式来执行的,也就是多个线程在轮番获得CPU时间片,从而获得执行机会,由于CPU执行的时间很快,所以在用户层面上来说CPU是同时在执行程序。多个线程如何交替获得CPU时间片,获得执行的机会。
在垃圾回收器的上下文语境中,可以作下方的解释
串行
垃圾回收线程和用户线程交替执行,且垃圾回收线程是单线程的,在执行垃圾回收线程时需要暂停用户线程,出现stop the world。GC线程是单线程的并非说明环境是单CPU下,在多核CPU下进行GC的时候只会使用单核CPU。

并行
并行是多条垃圾回收线程并行工作,这里肯定是在多核CPU环境下,多条垃圾回收线程同时执行,此时用户线程处于暂停。

在垃圾回收期间,所以的CPU核心均指向GC线程,用户线程暂停。
并发
并发是垃圾回收线程和用户线程同时执行,也是在多核CPU环境下,垃圾回收线程和用户线程并发执行,也就是同一个时刻CPU0上执行用户线程,CPU1上有可能执行垃圾回收线程;

在垃圾回收期间,在多核CPU下,每个CPU执行的线程可能是不一样的,达到GC线程和用户线程并发执行的目的。
由串行到并行再到并发执行,这就是垃圾回收器的进化历史,是随着CPU的发展而发展的,最初是单核CPU,慢慢的到多核,为了充分利用多核CPU的优势,所以有了并行的垃圾回收器,为了减少用户线程的停顿时间,所以有了并发的垃圾回收器。从垃圾回收线程和用户线程的关系上我们看到了垃圾回收器的演变过程。
有不当之处,欢迎指正!

java面试一日一题:再谈垃圾回收器中的串行、并行、并发的更多相关文章
- java面试一日一题:讲下mysql中的undolog
问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...
- java面试一日一题:讲下mysql中的索引
问题:请讲下mysql中的索引 分析:mysql中有很多索引,要对对这些索引有所掌握,还要弄清楚每种索引的本质? 回答要点: 主要从以下几点去考虑 1.索引的本质是什么 2.mysql的索引分类: 3 ...
- java面试一日一题:java中的垃圾回收器
问题:请讲下java中垃圾回收器有哪些? 分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器 回答要点: 主要从以下几点去考虑, 1.垃圾回收器的种类 2.每种垃圾回收器的着重点是什么 前边的 ...
- java面试一日一题:java中垃圾回收算法有哪些
问题:请讲下在java中有哪些垃圾回收算法 分析:该问题主要考察对java中垃圾回收的算法以及使用场景 回答要点: 主要从以下几点去考虑, 1.GC回收算法有哪些 2.每种算法的使用场景 3.基于垃圾 ...
- java面试一日一题:mysql中常用的存储引擎有哪些?
问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...
- java面试一日一题:讲下在什么情况下会发生类加载
问题:请讲下在什么情况下会发生类加载? 分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载? 回答要点: 主要从以下几点去考虑 1.什么是类加载: 2 ...
- java面试一日一题:如何设计一款垃圾回收器
问题:如果让你设计一个垃圾回收器,你会考虑哪些问题 分析:该问题主要考察对java中垃圾回收器的理解,要理解怎么回收:一款好的垃圾回收器有哪些衡量指标 回答要点: 主要从以下几点去考虑, 1.垃圾回收 ...
- java面试一日一题:讲对mysql的MVCC的理解
问题:请讲下对mysql中MVCC的理解 分析:这个问题要回答的是对MVCC的理解,以及MVCC解决了什么问题这几个方面入手. 回答要点: 主要从以下几点去考虑, 1.什么是MVCC? 2.MVCC用 ...
- java面试一日一题:如何判断一个对象是否为垃圾对象
问题:请讲下在java中如何判断一个对象是否为垃圾 分析:该问题主要考察对java中的垃圾回收,用什么方式去识别一个对象是垃圾: 回答要点: 主要从以下几点去考虑, 1.GC回收的是什么,回收发生在内 ...
随机推荐
- JAVAEE_Servlet_16_HttpServletRequest中常用方法(三)
HttpServletRequest中常用方法(三) * 回顾ServletContext对象,ServletContext对象是Servlet上下文对象 - 创建ServletContext对象 S ...
- 制作一个轻量级的状态管理插件:Vue-data-state
Vuex 是不是有点繁琐? Vuex 是针对 Vue2 来设计的,因为 option API 本身有很多缺点,所以 Vuex 只好做各种补丁弥补这些缺点,于是变得比较"复杂". 现 ...
- centos7安装kubernetes k8s 1.16
#初始化服务器 echo 'export LC_ALL="en_US.UTF-8"' >> /etc/profile source /etc/profile #!/bi ...
- 配置 ESLint 自动格式化自闭合标签(Self closing tag)
对于没有子元素或不需要子元素的 HTML 标签,通常写成其自闭合的形式会显得简洁些, - <SomeComponent></SomeComponent> + <SomeC ...
- Sql server注入一些tips
sql server环境测试: 几个特性: 1.sql server兼容性可以说是最差的. 举例: select x from y where id=1 字符串查询 select x from y w ...
- day-25-类的继承顺序-父类对子类的约束-多态-队列和栈
一.类的继承顺序 只要继承object类就是新式类 不继承object类的都是经典类 在python3 中所有的类都继承object类,都是新式类 在python2 中不继承object的类都是经典类 ...
- SpringBoot + Dubbo + Zookper 整合
经过2个小时的调试终于弄完了,过程如下, 环境: JDK1.8 .Springboot2.2.6. Windows10系统 如果不看Dubbo 管理页面的话就不用下载 Dubbo-domain了,这个 ...
- Day002 Java三大版本
Java三大版本 Write Once .Run Anywhere JavaSE: 标准版(桌面程序,控制台开发......) JavaME:嵌入式开发(手机,小家电.......) JavaEE:E ...
- 修改VScode底部状态栏颜色
点击齿轮进入setting 搜索workbench.colorCustomizations,然后点击编辑setting.json 修改为你喜欢的颜色即可,我这里修改为蓝色 例子: "work ...
- Pytest自动化测试-简易入门教程(01)
我们今天主讲的内容,就是测试框架Pytest,讲到这个测试框架对于没有做过Web自动化的伙伴来说,会觉得这个东西是陌生的,那么到底什么是框架呢?什么又是自动化呢?自动化为什么又要用框架呢? 难道我学自 ...