zoukankan      html  css  js  c++  java
  • JVM垃圾回收行为的并行与并发

    程序的并行和并发

    程序的并发(Concurrent)

    • 在操作系统中,是指一个时间段中有几个程序都处于己启动运行到运行完毕之间,且这几个程序都是在同一个处理器_上运行。
    • 并发不是真正意义上的“同时进行”,只是CPU把一个时间段划分成几个时间片段(时间区间),然后在这几个时间区间之间来回切换,由于CPU处理的速度非常快,只要时间间隔处理得当,即可让用户感觉是多个应用程序同时在进行。

    程序的并行(Parallel)

    • 当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,我们称之为并行(Parallel)。
    • 其实决定并行的因素不是CPU的数量,而是CPU的核心数量,比如一个CPU多个核也可以 并行。
    • 适合科学计算,后台处理等弱交互场景

    二者对比

    • 并发,指的是多个事情,在同一时间段内同时发生了。
    • 并行,指的是多个事情,在同一时间点上同时发生了。
    • 并发的多个任务之间是互相抢占资源的。
    • 并行的多个任务之间是不互相抢占资源的。
    • 只有在多CPU或者一个CPU多核的情况中,才会发生并行。否则,看似同时发生的事情,其实都是并发执行的。

    垃圾回收的并发与并行

    并发和并行,在谈论垃圾收集器的上下文语境中,它们可以解释如下:

    • 并行(Parallel) :指多条垃圾收集线程并行工作,但此时用户线程仍处于等待状态。

      • 如ParNew、 Parallel Scavenge、 Parallel 0ld;
    • 串行(Serial)

      • 相较于并行的概念,单线程执行。
      • 如果内存不够,则程序暂停,启动JVM垃圾回收器进行垃圾回收。回收完,再启动程序的线程。
    • 并发(Concurrent) :指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),垃圾回收线程在执行时不会停顿用户程序的运行。
      • ➢用户程序在继续运行,而垃圾收集程序线程运行于另一个CPU上;
      • ➢如: CMS、G1

  • 相关阅读:
    jQuery获取当前元素是该父元素的第几个元素&获取父元素的第n个子元素
    获取当前月份的天数
    获取当年的每个月份的天数:
    解决ul下的li换行问题,(父元素div加overflow:scroll没作用的问题)
     获取当年的月份的天数:
    程序员成长道路上必经的几个阶段
    CSS如何让文字垂直居中?
    2015年7个重要的Web设计趋势
    引入css文件时,css link和@import区别
    在html页面引用css文件的方法
  • 原文地址:https://www.cnblogs.com/yanl55555/p/13364750.html
Copyright © 2011-2022 走看看