G1GC选项-XX:ParallelGCThreads与-XX:ConcGCThreads之间有什么区别

时间:2019-01-10 09:57:55

标签: java jvm g1gc

在配置G1GC时 我们有2种线程数 -XX:ParallelGCThreads和-XX:ConcGCThreads 有什么区别,它们将如何影响, 任何参考表示赞赏。

2 个答案:

答案 0 :(得分:4)

G1算法具有某些阶段,其中一些阶段是“停止世界”阶段,这些阶段在垃圾回收期间停止了应用程序,它还具有一些阶段,这些阶段在应用程序运行时同时发生(候选标记等),其中包含这些信息注意:

  

ParallelGCThreads 选项会影响应用程序线程停止时用于阶段的线程数,而 ConcGCThreads 标志会影响用于并发阶段的线程数。

答案 1 :(得分:1)

这是设置,或者确切地说是JVM调优设置...我们通知JVM使用该特定类型的垃圾回收中的多少个线程。

我希望您已经知道什么是垃圾回收,因此当JVM运行垃圾回收时,它取决于将JVM设置为默认收集器的算法。

您可能已经知道有各种各样的垃圾收集器,例如G1,CMS等。

因此,根据您的设置(此处为线程数),GC算法将尝试使用那么多线程进行堆清理。 JVM运行FULL GC时,它将暂停其他线程的处理。

现在,假设您的应用程序正在运行并且正在执行繁重的任务,多个用户将其用于多个目的(例如非常繁忙的应用程序),并且JVM现在正在运行FULL GC,那么在这种情况下,所有工作线程都将暂停GC将会清理。在此期间,如果所有线程都被JVM获取,则用户将看到响应延迟。因此,您可以告诉JVM,嘿,在 上仅使用 那么多 (数量)个线程(CMS或并行)的垃圾收集运行。

要获取有关GC类型及其区别的更多信息,什么适合您的需求,请参考oracle的一些不错的文章和文档。

Here is one reference for the options you mentioned.

  

-XX:ParallelGCThreads:设置在垃圾收集器的并行阶段使用的线程数。默认值因运行JVM的平台而异。

     

-XX:ConcGCThreads:并发垃圾收集器将使用的线程数。默认值随JVM所在的平台而异   正在运行。