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的优势,所以有了并行的垃圾回收器,为了减少用户线程的停顿时间,所以有了并发的垃圾回收器。从垃圾回收线程和用户线程的关系上我们看到了垃圾回收器的演变过程。
有不当之处,欢迎指正!
- JVM_垃圾回收串行、并行、并发算法(总结)
- Java垃圾回收并发和并行
- java面试一日一题:如何设计一款垃圾回收器
- 面试阿里,美团90%会被问到的Java垃圾回收机制,一次性帮你搞定!
- 怎么在面试时回答Java垃圾回收机制(GC)相关问题?
- java垃圾回收算法之-CMS(并发标记清除)
- 面试必备 | 深入解析Java垃圾回收机制
- java 面试知识点笔记(六)垃圾回收 下篇
- java垃圾回收机制---面试的问题
- 【Java面试整理之JVM】深入理解JVM结构、类加载机制、垃圾回收GC原理、JVM内存分配策略、JVM内存泄露和溢出
- 面试准备--java垃圾回收机制、内存管理
- java垃圾回收 | 克服面试
- Java面试必知:jvm垃圾回收机制
- java垃圾回收算法,面试常问原理
- java并行,并发,串行,同步,异步,阻塞,非阻塞,同步阻塞,同步非阻塞,异步阻塞,异步非阻塞...
- Java 并发编程实战学习笔记——串行任务转并行任务
- Java面试题(二十九) 阿里面试高频问题:四大GC垃圾回收算法与七大垃圾收集器是如何相辅相成的?
- java面试之垃圾回收
- java 面试知识点笔记(四)垃圾回收 上篇
- 怎么在面试时回答java垃圾回收机制相关问题?