Java垃圾回收并发和并行

来源:互联网 发布:刘丹青 知乎 编辑:程序博客网 时间:2024/06/05 14:06

英文单词

并发:Concurrency 并行:Parallelism

并发

一个并发程序是具备处理多个任务的能力。并发并不需要有多个CPU,单个CPU通过时间片的方式,不同时间片处理不同任务,可以让程序“看起来”是都在执行的。

并行

并行表示在同一个时间点,有多个任务都在进行当中。并行是需要多个CPU才可以完成的。如果说每一个CPU都在运行一个程序,那么4个CPU就可以让4个程序“并行”运算。

Java垃圾回收器

串行处理器

  1. Serial收集器:
    用于新生代,单线程并Stop The World
    一般用于单CPU的应用,设置-XX:+UseSerialGC,可以保证较高的吞吐率
  2. SerialOld收集器:
    用于老年代,单线程。

并行收集器

  1. ParNew收集器
    用于新生代,用户响应时间比较短,适用于server。是CMS默认的新生代收集器
  2. Parallel Scavenge收集器
    用于新生代,吞吐量比较高,但是用户响应时间比较长,适用于后台。
  3. Parallel Old收集器
    用于老年代,响应时间较长,吞吐量较大。适用于后台,和Parallel Scavenge配合使用。

并发收集器

  1. CMS(Concurrent Mark Sweep),可以对老年代进行并行的垃圾回收。值得注意的是,jdk6以前,如果老年代使用了CMS,那么新生代只能使用Serial或ParNew收集器。
  2. G1(Garbage First),并行和并发,降低Stop The World的时间

参考链接

七个垃圾收集器的终极对比
GC 日志