jvm的gc线程数计算公式

因为GC操做会暂停全部的应用程序线程,JVM为了尽可能缩短停顿时间就必须尽量地利用更多的CPU资源。这意味着,默认状况下,JVM会在机器的每一个CPU上运行一个线程,最多同时运行8个。算法

一旦达到这个上限,JVM会调整算法,每超出5/8个CPU启动一个新的线程。因此总的线程数就是(这里的N表明CPU的数目):
ParallelGCThreads = 8 + ((N - 8) * 5/8)线程

有时候使用这个算法估算出来的线程数目会偏大。若是应用程序使用一个较小的堆(譬如大小为1 GB)运行在一个八颗CPU的机器上,使用4个线程或者6个线程处理这个堆可能会更高效。在一个128颗CPU的机器上,启动83个垃圾收集线程可能也太多了,除非系统使用的堆已经达到了最大上限。资源

相关文章
相关标签/搜索