Java8版本的Hotspot JVM,默認情況下使用的是并行垃圾收集器(Parallel GC)。其 他廠商提供的JDK8基本上也默認使用并行垃圾收集器。Java11的默認垃圾收集器是什么? Java9之后,官方JDK默認使用的垃圾收集器是G1。
常見的垃圾收集器有哪些? 常見的垃圾收集器包括:
串行垃圾收集器:‐XX:+UseSerialGC
并行垃圾收集器:‐XX:+UseParallelGC CMS
垃圾收集器:‐XX:+UseConcMarkSweepG G1
垃圾收集器: ‐XX:+UseG1GC
什么是串行垃圾收集? 就是只有單個worker線程來執行GC工作。
什么是并行垃圾收集? 并行垃圾收集,是指使用多個GC worker線程并行地執行垃圾收集,能充分利用多核 CPU的能力,縮短垃圾收集的暫停時間。除了單線程的GC,其他的垃圾收集器,比如PS,CMS, G1等新的垃圾收集器都使233用了多個線程來并行執行GC工作。
什么是并發垃圾收集器? 并發垃圾收集器,是指在應用程序在正常執行時,有一部分GC任務,由GC線程在應用線程一起并發執行。例如CMS/G1的各種并發階段。
什么是增量式垃圾收集? 首先, G1的堆內存不再單純劃分為年輕代和老年代,而是劃分為多個(通常是 2048個),可以存放對象的小塊堆區域(smaller heap regions)。 每個小塊,可能一會被定義成Eden區,一會被指定為Survivor區或者Old區。這樣劃分之后,使得G1不必每次都去回收整個堆空間,而是以增量的方式來進行處理:每次只處理一部分內存塊,稱為此次 GC 的回收集(collection set)。 下一次GC時在本次的基礎上,再選定一定的區域來進行回收。增量式垃圾收集的好處是大大降低了單次GC暫停的時間。