首页 > 其他分享 >JVM 垃圾收集器分类

JVM 垃圾收集器分类

时间:2024-05-29 13:33:02浏览次数:23  
标签:收集器 XX 线程 compaction JVM parallel 垃圾

  参考官网https://docs.oracle.com/en/java/javase/17/gctuning/introduction-garbage-collection-tuning.html。垃圾收集器可以分为以下四类:

  1、Serial收集器

            

    这个收集器是一个单线程工作的收集器, 但它的“单线 程”的意义并不仅仅是说明它只会使用一个处理器或一条收集线程去完成垃圾收集工作。更重要的是强调在它进行垃圾收集时, 必须暂停其他所有工作线程 直到它收集结束——这项工作是由虚拟机在后台自动发起和自动完成的。在用户不可知、 不可控的情况下把用户的正常工作的线程全部停掉, 这对很多应用来说都是不能接受的。

    Serial收集器缺点明显,其优点也同样明——简单并且高效:对于单CPU环境来说,由于Serial收集器没有线程间的交互,专心做垃圾收集自然可以做获得最高的垃圾收集效率。

    使用方式:-XX:+UseSerialGC。

    所以其最适用的场景是:It's best-suited to single processor machines because it can't take advantage of multiprocessor hardware。

  2、Parallel收集器

              

    这个收集器同时也被认为是一个吞吐量收集器,其与serial 收集器的主要区别在于该收集器是多线程的。多个垃圾收集器线程并行工作,同样会暂停用户线程,适用于科学计算、大数据后台处理等多交互场景。

    使用方式:- XX:+UseParallelGC

         -XX:-UseParallelOldGC 

    以上两种使用方式的区别在于parallel compaction。第一种方式模式使用parallel compaction,第二种方式禁用parallel compaction。

    Parallel  compaction is a feature that enables the parallel collector to perform major collections in parallel. Without parallel compaction, major collections are performed using a single thread, which can significantly limit scalability. Parallel compaction is enabled by default if the option -XX:+UseParallelGC has been specified. You can disable it by using the -XX:-UseParallelOldGC option.

  3、G1收集器

    G1垃圾回收器将堆内存分割成不同的区域然后并发地对其进行垃圾回收。

    G1 is a mostly concurrent collector. Mostly concurrent collectors perform some expensive work concurrently to the application. This collector is designed to scale from small machines to large multiprocessor machines with a large amount of memory. It provides the capability to meet a pause-time goal with high probability, while achieving high throughput.

    G1 is selected by default on most hardware and operating system configurations, or can be explicitly enabled using -XX:+UseG1GC .

  4、The Z收集器

    The Z Garbage Collector (ZGC) is a scalable low latency garbage collector. ZGC performs all expensive work concurrently, without stopping the execution of application threads.

     ZGC provides max pause times of a few milliseconds, but at the cost of some throughput. It is intended for applications, which require low latency. Pause times are independent of heap size that is being used. ZGC supports heap sizes from 8MB to 16TB. To enable this, use the -XX:+UseZGC option.

 

 

标签:收集器,XX,线程,compaction,JVM,parallel,垃圾
From: https://www.cnblogs.com/ilovebath/p/18219633

相关文章

  • Java垃圾收集
    在java中,垃圾意味着未引用的对象。垃圾收集是自动回收运行时未使用内存的过程。换句话说,它是一种销毁未使用对象的方法。它类似于,在C语言中使用free()函数,在C++中使用delete()。但是,在java中这些会自动执行。因此,java提供了更好的内存管理。垃圾收集的好处它使java内存有......
  • Python中的循环引用和垃圾回收
    引言在现代软件开发中,内存管理是保证程序性能和稳定性的关键因素之一。垃圾回收(GarbageCollection,GC)作为一种自动内存管理机制,它能够自动释放不再使用的内存资源,从而避免内存泄漏和程序崩溃。Python作为一种高级编程语言,其内置的垃圾回收机制对于开发者来说是一个强大的工具,但......
  • JVM调优维护常用工具之VisualVM 可视化优化工具
    VisualVM是一个工具,它提供了一个可视界面,用于查看Java虚拟机(JavaVirtualMachine,JVM)上运行的基于Java技术的应用程序(Java应用程序)的详细信息。VisualVM对JavaDevelopmentKit(JDK)工具所检索的JVM软件相关数据进行组织,并通过一种使您可以快速查看有关多个......
  • 【JVM】——类的生命周期——连接阶段和初始化阶段
    【喜欢的话可以一键三连+关注哦~】你的三连+关注是对我最大的支持!之后也会继续更新本专栏呦~~连接阶段验证:验证内容是否满足《Java虚拟机规范》(这个阶段程序员一般不需要参与)准备:给静态变量(static)分配内存并设置初始值final修饰的基本数据类型的静态变量,准备阶段直接......
  • JVM调优维护常用工具之Jconsole 监控管理
    Jconsole(JavaMonitoringandManagementConsole)是JDK中自带的java监控和管理控制台,用于对JVM中内存、线程和类等的监控,是一个基于JMX(javamanagementextensions)的GUI性能监测工具。jconsole使用jvm的扩展机制(接口、抽象类、反射、DubboSPI机制之一JDK中的SPI等)获取......
  • 基于单片机的垃圾分类系统设计(32+WIFI版)-设计说明书
    设计摘要:本文设计了一种基于32单片机的垃圾分类系统,旨在解决目前严重的垃圾污染问题。该系统利用了多种传感器和模块实现了对垃圾进行快速准确的分类。系统通过火焰传感器可以及时检测到垃圾中的火源,并触发相应的报警机制,避免了垃圾分类过程中的火灾事故发生;还加设了DHT11温湿......
  • Java-JVM-运行时数据区
    参考:面试必问,JVM内存模型详解一篇文章掌握整个JVM,JVM超详细解析!!!JVM内存模型深度刨析图灵课堂-JVM极简教程(视频)0.是什么JVM是JavaVirtualMachine的缩写,即Java虚拟机。它能够运行编译后的Java字节码,使Java程序具有跨平台的特性。JVM并不会在安装JDK或JRE时自动启动,当......
  • JVM 参数优化
    1.JVM参数优化1.1.查看JVM默认参数1.2.关键JVM参数1.3.最终参数优化结果1.JVM参数优化1.1.查看JVM默认参数java-XX:+PrintFlagsInitial1.2.关键JVM参数JVM总体上可以分成三类:-:标准参数,比如-verbose:gc这类表示标准实现,所有的虚拟机都需要实......
  • Java JVM——1.JVM与Java体系结构
    前言作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题?✘ 运行着的线上系统突然卡死,系统无法访问,甚至直接OOMM!✘ 想解决线上JVMGC问题,但却无从下手。✘ 新项目上线,对各种JVM参数设置一脸茫然,直接默认吧,然后就JJ了。✘ 每次面......
  • 深入理解Java的垃圾回收机制(GC)实现原理
    深入理解Java的垃圾回收机制(GC)实现原理Java的垃圾回收机制(GarbageCollection,GC)是其内存管理的核心功能之一。通过GC,Java自动管理对象的生命周期,回收不再使用的对象所占的内存空间。本文将详细探讨GC的实现原理、不同算法的细节以及其在JVM中的应用。1.垃圾回收的基本......