首页 > Java > java教程 > 正文

Java 垃圾收集器的类型

PHPz
发布: 2024-08-30 15:54:06
原创
470 人浏览过

Java垃圾收集器的类型定义了我们用来开发程序的类型。垃圾收集是Java的一个重要特性。在Java中,我们使用垃圾收集来释放不再使用的内存。垃圾收集器跟踪所有仍在使用的对象,并将其余对象标记为垃圾。垃圾收集器使用扫描和标记算法。

在Java中,垃圾回收无非就是内存的管理;我们正在使用 JVM 做同样的事情。通过使用垃圾收集,我们不需要使用程序员来处理对象的分配和释放。在java应用程序中通过使用操作系统分配和释放内存,我们从应用程序和新变量的垃圾收集中提供相同的内存。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

Java提供了多种垃圾收集器,满足应用程序的不同需求。为我们的应用程序选择正确的垃圾收集器对于提高应用程序的性能非常重要。 Java提供了多种类型的垃圾收集器来满足应用程序的需求。

Java 垃圾收集器的类型

要点

  • Java中的并行GC被称为JVM中使用的默认垃圾收集器。并行GC的工作原理与串行GC相同。
  • 串行垃圾收集器与单线程环境相匹配。它使用单线程进行 GC。

Java 垃圾收集器的类型

以下是 Java 垃圾收集器的类型。

我们根据我们的要求使用这些类型,如下;

  • 串行垃圾收集器
  • 并行垃圾收集器
  • 并发标记清除垃圾收集器
  • G1 垃圾收集器
  • Epsilon 垃圾收集器
  • Z 垃圾收集器
  • Shenandoah 垃圾收集器

每个垃圾收集器的工作和性能都不同;它包含自己的优点和缺点。 Java 允许我们选择 JVM 使用的任何垃圾收集器。在选择垃圾收集器时,我们需要传递JVM的参数。

1.串行垃圾收集器

这个垃圾收集器在保留应用程序的所有线程的同时工作。所以我们可以说我们的应用程序的线程通过使用串行垃圾收集器的过程而冻结;这个过程被称为世界和停止事件。为了在服务器环境中使用串行垃圾收集器,我们可以在简单的程序中使用它。

要使用串行垃圾收集器,我们需要在 JVM 的参数中执行 –XX:+UseSerialGC。我们可以在使用串行垃圾收集器时指定它。

2.并行垃圾收集器

并行GC和串行GC之间的唯一区别是并行GC使用多个线程,而串行GC仅使用单个线程。我们正在使用并行 GC 来加快应用程序的吞吐量;这也称为吞吐量收集器。

要使用并行垃圾收集器,我们需要在 JVM 的参数中使用 –XX:+UseParallelGC。开发 Java 应用程序时,并行和串行垃圾收集器是必不可少的。

3. CMS 垃圾收集器

在CMS GC中,我们使用多个线程,这些线程用于堆和扫描,这将标记标记实例的驱逐。这种类型的GC在GC时不会冻结应用程序线程。垃圾收集器的线程与应用程序线程同时执行。

使用这个垃圾收集器,我们可以使用多个 CPU 来提高应用程序的吞吐量。如果我们有更多的 CPU 可供使用,我们将使用 CMS GC。要使用CMS垃圾收集器,我们需要在JVM参数中使用–XX:+UseParNewGC。我们在使用这个垃圾收集器时使用这个 Java 虚拟机参数。

4. G1 垃圾收集器

如果内存超过 4 GB,则使用 G1 垃圾收集器。此 GC 将堆划分为相同大小的块,并按照优先级执行并行垃圾收集。 G1 垃圾收集器正在显示全局标记阶段。

在完成标记阶段时,该垃圾收集器收集包含垃圾收集器对象的信息。那么要使用G1垃圾收集器,我们需要在JVM的参数中使用–XX:+UseG1GC。

5. Epsilon 垃圾收集器

这是一个被动或不可操作的垃圾收集器。该垃圾收集器为应用程序分配内存,但不会收集未使用的对象。当应用程序耗尽堆时,JVM 将关闭,因此我们可以说这次 GC 允许应用程序内存不足或崩溃。

这个垃圾收集器的主要目的是管理和测量应用程序的性能。这个垃圾收集器包含在程序内部运行的复杂程序。

6. Z 垃圾收集器

这个垃圾收集器同时执行所有工作,而不会停止我们应用程序的执行。此垃圾收集器处理包含多个 TB 大小的堆。

这种类型的垃圾收集器在线程中执行其循环。它将在平均 1 MS 时间内暂停其应用程序。

7.谢南多厄垃圾收集器

这种类型的垃圾收集器使用内存区域来管理哪些对象不再使用以及哪些对象已准备好进行压缩。该垃圾收集器将转发指针添加到每个堆,该堆使用指定对象的控制访问权。

JVM 参数

以下是 Java 虚拟机的参数。我们在垃圾收集器中使用这些参数,如下所示。

  • –XX:ParallelGCThreads=: 该参数控制 GC 线程数。
  • –XX:MaxGCPauseMillis=: 此参数指定最大暂停时间。
  • –XX:GCTimeRatio=: 此参数指定最大吞吐量目标。
  • –XX:+UseSerialGC: 此参数指定串行垃圾收集器。
  • –XX:+UseParallelGC: 此参数指定并行垃圾收集器。
  • –XX:+UseG1GC: 此参数指定 G1 垃圾收集器。
  • –XX:+UseConcMarkSweepGC: 此参数指定 CMS 垃圾收集器。
  • –XX:ParallelCMSThreads: 此参数指定 CMS 收集器和我们使用的线程数。
  • -XX:InitiatingHeapOccupancyPercent=: 此参数控制启动并发周期时的堆占用率。
  • -XX:G1MixedGCLiveThresholdPercent=: 当旧区域中存在活动对象时,此参数将其值从 GC 对象中排除。
  • -XX:G1HeapWastePercent=: 此参数指定允许浪费的区域数量。

结论

Java提供了多种垃圾收集器来满足各种应用程序的需求。为我们的应用程序选择正确的垃圾收集器以提高其性能至关重要。 java垃圾收集器的类型定义了我们在开发程序时将使用的垃圾收集器的类型。 Java 有一个重要的特性,叫做垃圾回收。

以上是Java 垃圾收集器的类型的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!