首页 > 其他分享 >Jdk1.8 垃圾收集器分类及垃圾收集器选择思路

Jdk1.8 垃圾收集器分类及垃圾收集器选择思路

时间:2024-10-31 23:23:18浏览次数:4  
标签:Jdk1.8 收集器 应用程序 并发 XX 垃圾 暂停

  根据运行方式Java HotSpot VM 包括三种不同类型的收集器分别是串行收集器、并行收集器和并发收集器,每种收集器具有不同的性能特征。

  串行收集器使用单个线程来执行所有垃圾收集工作,这使得它相对高效,因为线程之间没有通信开销。它最适合于单处理器计算机,因为它无法利用多处理器硬件,尽管它在多处理器上对于具有较小数据集(最大约 100 MB)的应用程序非常有用。默认情况下,在某些硬件和操作系统配置上会选择串行收集器,也可以使用选项 显式启用串行收集器。-XX:+UseSerialGC

  并行收集器(也称为吞吐量收集器)并行执行次要回收,这可以显著降低垃圾回收开销。它适用于在多处理器或多线程硬件上运行的具有中型到大型数据集的应用程序。默认情况下,在某些硬件和操作系统配置上会选择并行收集器,也可以使用选项 显式启用并行收集器。-XX:+UseParallelGC

  •Parallel compaction 是一项功能,它使 parallel collector 能够并行执行主要回收。如果没有并行压缩,则使用单个线程执行主要集合,这可能会严重限制可伸缩性。如果指定了该选项,则默认情况下会启用 Parallel compaction。将其关闭的选项是 。-XX:+UseParallelGC-XX:-UseParallelOldGC

  并发收集器,大多数并发收集器并发执行其大部分工作(例如,当应用程序仍在运行时)以保持垃圾回收暂停时间较短。它专为具有大中型数据集的应用程序而设计,在这些数据集中,响应时间比整体吞吐量更重要,因为用于最大限度地减少暂停的技术会降低应用程序性能。Java HotSpot VM 提供了两个主要并发收集器并发标记清除(CMS)收集器和垃圾优先垃圾回收器提供选择;使用选项启用 CMS 收集器或启用 G1 收集器。-XX:+UseConcMarkSweepGC -XX:+UseG1GC、 -XX:+CMSIncrementalMode

垃圾收集器选择思路
  除非应用程序具有相当严格的暂停时间要求,否则请首先运行应用程序并允许 VM 选择收集器。如有必要,请调整堆大小以提高性能。如果性能仍未达到目标,请使用以下准则作为选择垃圾收集器的起点。
  如果应用程序具有较小的数据集(最大约 100 MB),则选择带有选项 的 serial collector 。-XX:+UseSerialGC
  如果应用程序将在单个处理器上运行,并且没有暂停时间要求,则让 VM 选择收集器,或使用选项 .-XX:+UseSerialGC
  如果应用程序性能峰值是第一要务,并且没有暂停时间要求或 1 秒或更长时间的暂停是可接受的,则让 VM 选择收集器,或使用 选择并行收集器。-XX:+UseParallelGC
  如果响应时间比总体吞吐量更重要,并且垃圾回收暂停时间必须短于大约 1 秒,则使用或选择并发回收器。-XX:+UseConcMarkSweepGC -XX:+UseG1GC
 

  这些准则仅提供了选择收集器的起点,因为性能取决于堆的大小、应用程序维护的实时数据量以及可用处理器的数量和速度。暂停时间对这些因素特别敏感,因此前面提到的1秒阈值只是近似值:在许多数据大小和硬件组合上,并行收集器的暂停时间将超过 1 秒;相反,对于某些组合,并发收集器可能无法将暂停时间缩短到1秒。
  如果建议的收集器未达到所需的性能,请首先尝试调整堆大小和生成大小以满足所需的目标。如果性能仍然不足,请尝试使用其他收集器:使用并发收集器来减少暂停时间,并使用并行收集器来提高多处理器硬件上的整体吞吐量。

以上来自于对 Java 平台、标准版 HotSpot 虚拟机垃圾回收调优指南第五章翻译摘抄

 

标签:Jdk1.8,收集器,应用程序,并发,XX,垃圾,暂停
From: https://www.cnblogs.com/db-put/p/18519134

相关文章

  • 垃圾回收机制
    垃圾回收机制: 1.引用计数法:每个对象都有一个引用计数器,当对象被引用时,计数器加1,当引用失效时,计数器减1,当计数器为0时,对象被回收。垃圾回收器定期(周期性)找出那些不再被引用的对象,然后释放这些对象所占用的内存。 2.标记-清除法:从根节点开始遍历所有对象,标记所有可达的对象,然后清......
  • Java Z 垃圾收集器如何彻底改变内存管理
    大家好,我是V哥,今天的内容来聊一聊ZGC,JavaZGarbageCollector(ZGC)是一个低延迟垃圾收集器,旨在优化内存管理,主要用于大内存应用场景。它通过以下几个关键创新,彻底改变了传统Java的内存管理方式:V哥总结的以下5点,欢迎一起讨论。1.极低的暂停时间ZGC的暂停时间一般保持在10毫......
  • 【Python原创毕设|课设】基于Python、机器学习的垃圾邮件分类与安全宣传网站-文末附下
    基于Python、机器学习的垃圾邮件分类与安全宣传网站-(获取方式访问文末官网)一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、数据库设计七、功能实现八、源码获取一、项目简介该该系统是一个基于Python的邮件分类和安全宣传网站,结合了机器学习和数......
  • 深入了解 ArkTS 的高性能垃圾回收(HPP GC)
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。引言垃圾回收(GC)是现代编程语言中重要......
  • ArkTS 编程语言中的垃圾回收模型:分代式 GC 详解
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。引言垃圾回收(GC)是现代编程语言中重要......
  • 基于django+vue+Vue垃圾分类管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景随着城市化进程的加快,垃圾处理成为城市管理的重要组成部分。垃圾分类作为实现可持续发展的一项重要举措,近年来受到国内外广泛关注。关于垃......
  • 垃圾溢满堆放识别检测
    垃圾溢满堆放识别检测系统的核心技术是基于YOLO深度学习模型,垃圾溢满堆放识别检测系统能够在监控画面中快速识别出垃圾箱外部的垃圾堆放情况。系统经过大量的训练和优化,能够识别出各种垃圾的特征,并能够准确判断是否溢满堆放。垃圾溢满堆放识别检测系统一旦检测到垃圾箱外有垃圾堆......
  • 水面漂浮物生活垃圾识别检测系统
    水面漂浮物生活垃圾识别检测系统通过现场监控摄像机对河道湖面等水体进行实时监测,水面漂浮物生活垃圾识别检测系统借助智能视频分析技术和YOLO深度学习技术,系统能够自动识别和抓拍水面上的垃圾漂浮物。一旦系统检测到有垃圾漂浮在水面上,立即触发预警机制,并将现场抓拍的图片及时推......
  • 【毕业设计】基于Springboot + Vue的城市垃圾分类管理系统
    随着城市化进程的加快,城市垃圾的处理与分类成为了社会关注的重点。传统的垃圾管理方式通常依赖于人工分拣和纸质记录,这种方式不仅效率低下,还容易产生信息记录错误和数据丢失的情况。因此,开发一个智能化的城市垃圾分类管理系统显得尤为重要。本文将介绍基于SpringBoot开发的城市......
  • python垃圾回收机制(十分重要)
    python垃圾回收机制总概​ python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略,在Python内部记录着所有使用中的对象各有多少引用。​ 在C/C++中采用用户自己管理维护内存的方式。自己管理内存极其自由,可以任意申请内存,但也为大量内存泄露、悬空指针等bug......