在配置G1GC时 我们有2种线程数 -XX:ParallelGCThreads和-XX:ConcGCThreads 有什么区别,它们将如何影响, 任何参考表示赞赏。
答案 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所在的平台而异 正在运行。