JVM常用垃圾收集器簡介

JVM底层原理,JVM架构详解】 类加载子系统负责从文件系统或是网络中加载.class文件,class文件在文件开头有特定的文件标识。把加载后的class类信息存放于方法区,除了类信息之外,方法区还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射);ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定;如果调用构造器实例化对象,则该对象存放在堆区。 阅读详情

垃圾收集器是基於垃圾收集算法的具體實現。JVM的垃圾收集器有很多種,但目前,還沒有出現最好的垃圾收集器,更沒有萬能的垃圾收集器。我們能做的就是根據自己的業務場景選擇適合自己的垃圾收集器。

1 Serial收集器
  最基本,歷史最悠久的垃圾收集器,單綫程,執行垃圾收集時需要暫停工作綫程,直至垃圾收集結束。
  Young區采用複製算法,Old區采用標記整理算法。
  優點是簡單高效,沒有綫程交互的開銷。缺陷是過長的STW,導致不良的用戶體驗。
2 ParNew收集器
  Serial收集器的多綫程版本,除了使用多綫程進行垃圾收集之外,其他與Serial收集器完全一樣。
3 Parallel Scavenge收集器
  類似於ParNew收集器,是Server模式下的默認收集器。
  主要關注吞吐量,高效使用CPU;
  Young區采用複製算法,Old區采用標記整理算法;
4 CMS收集器
  以獲取最短回收停頓時間為目標的收集器,HotSpot虛擬機第一款真正意義上的并發收集器,第一次實現垃圾收集綫程與用戶綫程基本上同時工作;
  過程:初始標記,并發標記;重新標記;并發清理;并發重置
  優點:并發收集,低停頓;
  缺點:對CPU資源敏感;無法處理浮動垃圾;會有大量空間碎片產生(因爲使用標記清除算法),當然,可以通過壓縮參數在清除完成后整理空間碎片;執行過程的不確定性;
5 G1收集器
  面嚮服務器的收集器,主要針對多核大内存機器作垃圾收集,在滿足特定GC停頓時間的同時,還具備高吞吐量;
  G1收集器保留了分代的概念,但不再是物理的隔閡,它將内存劃分為可以不連續的Region的集合;某一個Region可以是年輕代,老年代,或者是大對象區;主要采用複製算法
  過程:初始標記,并發標記,最終標記,篩選回收;
  G1相較於其他收集器,最主要的一個特徵就是可預測的停頓;

時間有限,不寫太多,僅供瞭解。

JVM-垃圾收集器 通过学习了解到现在商用的JVM中的垃圾收集采用的是分带收集算法,那么针对不同年代采用了不同的收集算法,从而在JVM发展的过程中,就产生了不同的垃圾收集器,一般分为新生代收集器和老年代收集器,两者相互组合进行GC操作(下图中相连的垃圾收集器表示可以相互组合,注意Serial Old和CMS也可以联合进行老年代的垃圾收集)。JDK6u14中开始测试的G1垃圾收集器,正式发布于JDK7u4中,是目前唯一 阅读详情

相关推荐

Java JVM 中的垃圾收集器及其配置指南

Serial GC: 单线程,适用于小型应用。: 多线程,适用于需要高吞吐量的应用。是 JDK 8 的默认垃圾收集器。: 并发垃圾收集,适用于低停顿时间需求的应用。: 平衡吞吐量和停顿时间,是 JDK 9+ 的默认垃圾收集器。: 超低延迟垃圾收集器,适用于需要极低停顿时间的大内存应用。: 类似于 ZGC,也是超低延迟垃圾收集器。Epsilon GC: 无操作垃圾收集器,主要用于测试和基准分析。在选择 Java 的垃圾收集器时,应根据应用程序的特点和需求来选择最合适的垃圾收集器

流楚丶格念的博客 1135

JVM垃圾收集器(7种)

CMS(Concurrent Mark Sweep)收集器是以获取最短回收停顿时间的为目标的收集器。注重服务的响应速度,希望系统停顿时间尽可能短,以给用户更好的交互体验。这个收集器是基于标记清除算法实现的。用于老年代的收集。 收集过程有四个阶段:1、初始标记 2、并发标记 3、重新标记 4、并发清除 四个阶段中初始标记和重新标记仍需要暂停所有的用户线程(Stop The World),但为什么说这个收集器也暂停了所有的线程,为什么还能做到停顿时间

qq_64680177的博客 3602

JVM垃圾收集器详解

GC是Garbage Collection,即垃圾回收。新生成的对象首先存放在生成区,当生成区满了,触发Minor GC,存活下来的对象转移到Survivor0,即FromSpace,Survivor0区满后触发执行Minor GC,存活对象移动到Suvivor1区,即ToSpace,经过多次Minor GC仍然存活的对象转移到老年代。所以老年代存储的是长期活动的对象,当老年代满了会触发Major GC

悦分享 1001

JVM】7种经典的垃圾收集器

图中所示七种垃圾收集器虽然算不上先进技术,但是它们在实践中足够成熟,基本上可以认为是现在未来两、三年内,能够在生产环境上放心使用的所有垃圾收集器了。这七种垃圾收集器是作用于不同分代的,两个收集器之间若有连线,则说明它们可以搭配使用。垃圾收集器的位置则表示了属于新生代还是老年代收集器。串行吞吐量优先响应时间优先。

沉迷写代码的程序猿的博客 2667

一文彻底搞懂八种JVM垃圾回收器

随着硬件技术的发展,可用内存越来越大,这为应用程序提供了更多的内存空间,从而能够创建更多的对象,减少了垃圾收集的频率。ZGC 的出现为 Java 应用提供了一种更加高效、可预测的垃圾回收解决方案,与传统的垃圾回收器相比,ZGC 的主要目标是实现极低的垃圾回收停顿时间,使得 Java 应用能够以更可预测的方式运行,尤其在大内存堆上表现良好。在这种场景下,传统的垃圾回收器可能会面临长时间的停顿,影响应用的响应性和用户体验,而 ZGC 能够有效地缓解这一问题,保持较低的停顿时间,从而确保应用的流畅运行。

永远在路上 8767

JVM:7种垃圾收集器

一、Serial收集器(单线程收集器) 这个收集器是一个单线程的收集器,但它的“单线程”的意义并不仅仅说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。(StopTheWorld)优点:相比其他收集器的单线程更简单而高效 二、ParNew收集器 ParNew收集器其实就是Serial收集器的多线程版......

qq_38022739的博客 3500

深度解析JVM世界:常见的垃圾回收器

本篇文章的主要内容是讲解常见的垃圾收集器垃圾收集器是Java虚拟机中负责自动管理内存的重要组件。它的主要任务是自动回收不再使用的对象,以防止内存泄漏,并使得程序员无需关心内存管理问题,专注于业务逻辑的实现。

知道的越多 不知道的就越多 2231

JVM垃圾收集—垃圾收集器及常见组合参数

链接: JVM垃圾收集—垃圾收集算法上一篇介绍了垃圾收集算法及分区,这篇我们来学习垃圾收集器 首先我们要知道垃圾收集器有三种类型:串行收集器 Serial 和 Serial Old 只能有一个垃圾回收线程执行,用户线程暂停。(适用于内存较小的嵌入式设备)并行收集器[吞吐量优先] Paraller Scanvenge、Parallel Old 多条垃圾收集线程并行工作,但此时用户线程仍然处于等待阶段。(适用于科学计算、后台处理等若干交互场景)并发收集器[停顿时间优先] CMS、G1 用户线程和垃圾收集线程同

想着百万年薪努力的小赵 5万+

JVM常用垃圾收集器

JDK8默认收集器( JDK1.8 默认使用的是 Parallel Scavenge + Parallel Old,如果指定了-XX:+UseParallelGC 参数,则默认指定了-XX:+UseParallelOldGC,可以使用-XX:-UseParallelOldGC 来禁用该功能)ZGC 可以将暂停时间控制在几毫秒以内,且暂停时间不受堆内存大小的影响,出现 Stop The World 的情况会更少,但代价是牺牲了一些吞吐量。不过,默认的垃圾回收器依然是 G1。各个垃圾收集器可以配合使用。

YSecret_Y的博客 1167

JVM常用垃圾收集器与调优技巧

垃圾收集器(Garbage Collector, GC)是Java虚拟机(JVM)中的一个关键组件,它自动地管理和释放不再使用的对象所占用的内存空间。这样可以防止内存泄漏,并简化了开发者的编程任务。

qq_45867699的博客 1576

JVM几种常见的垃圾收集器总结

前言 在介绍垃圾收集器之前,首先介绍以下这几个概念 1. Stop-the-world 它是指 JVM 由于要执行 GC 而停止了应用程序的执行,并且这种情形会在任何一种 GC 算法中发生。当 Stop-the-world 发生时,除了 GC 的线程以外,其他的线程均处于等待的状态,直到 GC 任务完成。 实际上,很多 GC 优化都是通过减少 Stop-the-world 的时间来提高程序的性能。...

To be a great coder 9439

JVM垃圾收集——垃圾收集器

垃圾收集器的发展和分类、Serial收集器、ParNew收集器、Parallel Scaveng收集器、CMS收集器、G1收集器、ZGC收集器

码说芯语的博客 2851

jvm垃圾收集器简介

串行垃圾收集器,是指使用单线程进行垃圾回收,垃圾回收时,只有一个线程在工作,Java应用中的所有线程都要暂停,等待垃圾回收的完成。这种现象称之为STW(Stop-The-World),一般的javaweb应用中不会采用这种收集器

流浪猫 1079

JVMJVM垃圾收集器:G1垃圾收集器深入解析

在任意一次收集暂停中,CSet所有分区都会被释放,内部存活的对象都会被转移到分配的空闲分区中。在[ 整堆5%, 整堆60% ]的基础上,G1会计算下现在Eden区回收大概要多久时间,如果回收时间远远小于参数-XX:MaxGCPauseMills设定的值(默认200ms),那么增加年轻代的region,继续给新对象存放,不会马上做YoungGC。如果发现全局缓冲区日志积累较多,G1会调用更多的线程来出来缓冲区日志,甚至会调用App Thread 来处理,造成应用任务堵塞,所以必须要尽量避免这样的现象出现。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

JVM垃圾收集器详解

垃圾收集器详解

关关的博客 1495

JVMJVM 垃圾收集器:浅析(Serial、SerialOld、ParNew、Parallel Scavenge、Parallel Old、CMS、G1、ZGC

使用G1收集器时,Java堆的内存布局与就与其他收集器有很大差别,它将整个Java堆划分为多个大小相等的独立区域(Region),虽然还保留有新生代和老年代的概念,但新生代和老年代不再是物理隔离的了,它们都是一部分Region(不需要连续)的集合。Parallel Scavenge收集器是一个新生代收集器,它也是使用复制算法的收集器,又是并行的多线程收集器,看上去和ParNew一样,但是Parallel Scanvenge更关注系统的。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

JVM垃圾收集器

JVM垃圾收集器是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法)的具体实现,不同JVM所提供的垃圾收集器可能会有很大差别。Java垃圾回收器为应用程序提供内存的自动分配、自动回收功能。

积跬步,至千里。 800
下一篇: JVM类加载过程
js125
博客等级 码龄14年 13粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值