当前位置: 首页 > wzjs >正文

app网站开发哪家专业深圳市前十的互联网推广公司

app网站开发哪家专业,深圳市前十的互联网推广公司,伊通县建设局网站,备案网站出售JVM垃圾回收器全面解析与G1深度探秘及四种引用详解 JVM虚拟机(七):JVM垃圾回收器全面解析与G1深度探秘及四种引用详解一、JVM有哪些垃圾回收器1. Serial回收器2. ParNew回收器3. Parallel Scavenge回收器4. Serial Old回收器5. Parallel Old回…

JVM垃圾回收器全面解析与G1深度探秘及四种引用详解

  • JVM虚拟机(七):JVM垃圾回收器全面解析与G1深度探秘及四种引用详解
    • 一、JVM有哪些垃圾回收器
      • 1. Serial回收器
      • 2. ParNew回收器
      • 3. Parallel Scavenge回收器
      • 4. Serial Old回收器
      • 5. Parallel Old回收器
      • 6. CMS(Concurrent Mark Sweep)回收器
      • 7. G1(Garbage-First)回收器
    • 二、详细聊一下G1垃圾回收器
      • 3.6.1 概述
      • 3.6.2 Young Collection(年轻代垃圾回收)
      • 3.6.3 Young Collection + Concurrent Mark(年轻代垃圾回收 + 并发标记)
      • 3.6.4 Mixed Collection(混合垃圾回收)
    • 三、强引用、软引用、弱引用、虚引用的区别
      • 3.7.1 强引用(Strong Reference)
      • 3.7.2 软引用(Soft Reference)
      • 3.7.3 弱引用(Weak Reference)
      • 3.7.4 虚引用(Phantom Reference)

JVM虚拟机(七):JVM垃圾回收器全面解析与G1深度探秘及四种引用详解

一、JVM有哪些垃圾回收器

在Java虚拟机(JVM)中,垃圾回收器负责自动管理内存,回收不再使用的对象所占用的内存空间。不同的垃圾回收器具有不同的特点和适用场景,以下是常见的JVM垃圾回收器:

1. Serial回收器

  • 特点:单线程垃圾回收器,在进行垃圾回收时,会暂停所有用户线程(Stop-The-World,STW)。它简单高效,对于单线程环境或小型应用程序有较好的性能表现。
  • 适用场景:Client模式下的小型应用,对内存要求不高,单核CPU环境。

2. ParNew回收器

  • 特点:Serial回收器的多线程版本,允许多个线程同时进行垃圾回收,同样会产生STW。它常与CMS回收器配合使用,是Server模式下新生代回收的常用选择之一。
  • 适用场景:Server模式,多核CPU环境,与CMS配合时的新生代回收。

3. Parallel Scavenge回收器

  • 特点:关注吞吐量的垃圾回收器,通过最大化吞吐量来提高程序的运行效率。它也是多线程回收器,可通过参数控制吞吐量目标。
  • 适用场景:后台任务、对响应时间要求不高但重视吞吐量的应用,如批量数据处理。

4. Serial Old回收器

  • 特点:Serial回收器的老年代版本,单线程回收,使用标记-整理算法。通常作为其他回收器的后备方案,在JVM内存较小、单核环境下仍有一定应用。
  • 适用场景:与Serial回收器配合,或作为Parallel Scavenge老年代回收的后备。

5. Parallel Old回收器

  • 特点:Parallel Scavenge的老年代版本,多线程,采用标记-整理算法,提供与Parallel Scavenge类似的吞吐量优先特性。
  • 适用场景:注重吞吐量的应用,老年代回收,与Parallel Scavenge配合。

6. CMS(Concurrent Mark Sweep)回收器

  • 特点:以获取最短回收停顿时间为目标的回收器,采用标记-清除算法。它能在垃圾回收时与用户线程并发执行部分操作,减少STW时间。
  • 优点:响应速度快,适合对响应时间要求高的应用,如Web应用。
  • 缺点:会产生内存碎片,并发阶段可能因用户线程继续运行导致重新标记,且对CPU资源敏感。
  • 适用场景:B/S架构等对响应时间敏感的应用。

7. G1(Garbage-First)回收器

  • 特点:新一代垃圾回收器,将堆内存划分为多个大小相等的Region,采用分代收集思想,但不再有固定的新生代和老年代。它能更精确地控制垃圾回收的停顿时间,同时兼顾吞吐量和响应时间。
  • 适用场景:大内存、多处理器环境,对停顿时间有严格要求的应用,是JDK 9及以上的默认回收器。

二、详细聊一下G1垃圾回收器

3.6.1 概述

G1(Garbage-First)回收器是一种面向服务器的垃圾回收器,旨在满足高吞吐量和低停顿时间的需求。与传统回收器不同,G1将堆内存划分为大量大小相等的Region(区域),每个Region可以动态地扮演新生代或老年代的角色。G1通过维护一个优先列表,每次根据允许的停顿时间优先回收垃圾最多的Region,这也是其名称“Garbage-First”的由来。这种设计使得G1能更灵活地控制垃圾回收的停顿时间,同时提高内存的利用率和回收效率。

3.6.2 Young Collection(年轻代垃圾回收)

  • 回收过程:当新生代的Eden区填满时,触发Young Collection。G1采用复制算法,将Eden区和Survivor区中存活的对象复制到另一个空的Survivor区或晋升到老年代(如果对象年龄达到阈值)。此时会产生STW,但由于新生代对象存活率通常较低,复制操作的开销相对较小。
  • 特点:快速处理新生代大量短生命周期的对象,通过多线程并行执行,减少回收时间。

3.6.3 Young Collection + Concurrent Mark(年轻代垃圾回收 + 并发标记)

  • 并发标记阶段
    • 初始标记(Initial Mark):STW,标记GC Roots直接引用的对象,时间很短。
    • 并发标记(Concurrent Mark):与用户线程并发执行,从GC Roots开始遍历对象图,标记存活的对象。
    • 最终标记(Final Mark):STW,处理并发标记阶段遗留的少量对象,确保标记准确。
    • 筛选回收(Live Data Counting and Evacuation):计算每个Region的存活对象和可回收空间,为混合回收做准备。
  • 与Young Collection的配合:在年轻代回收后,通过并发标记确定老年代中哪些Region含有较多垃圾,为后续的混合回收提供依据。

3.6.4 Mixed Collection(混合垃圾回收)

  • 回收过程:G1根据筛选回收阶段的统计信息,选择垃圾比例较高的老年代Region,结合新生代Region一起回收。回收时采用复制算法,将存活对象复制到空的Region中,从而清理掉垃圾较多的Region。
  • 特点:在控制停顿时间的前提下,逐步回收老年代的垃圾,避免老年代内存碎片化,同时提高整体内存的利用率。

三、强引用、软引用、弱引用、虚引用的区别

3.7.1 强引用(Strong Reference)

  • 定义:程序中最常见的引用方式,如Object obj = new Object();,obj就是一个强引用。
  • 回收时机:只要强引用存在,垃圾回收器永远不会回收被引用的对象。即使内存不足,JVM也会抛出OutOfMemoryError而不会回收强引用对象。
  • 应用场景:大多数普通对象的引用,确保对象在需要时始终存在。

3.7.2 软引用(Soft Reference)

  • 定义:通过SoftReference类实现,如SoftReference<Object> softRef = new SoftReference<>(new Object());
  • 回收时机:当内存不足时,垃圾回收器会回收软引用所引用的对象。软引用通常用于实现缓存,在内存充足时保留对象,内存紧张时释放以避免OOM。
  • 应用场景:图片缓存、网页缓存等,允许在内存不足时释放非关键对象。

3.7.3 弱引用(Weak Reference)

  • 定义:通过WeakReference类实现,WeakReference<Object> weakRef = new WeakReference<>(new Object());
  • 回收时机:只要发生垃圾回收,无论内存是否充足,弱引用所引用的对象都会被回收。弱引用的生命周期更短。
  • 应用场景:临时对象、对生命周期要求较短的辅助对象,如哈希表中的弱引用键值对,避免内存泄漏。

3.7.4 虚引用(Phantom Reference)

在这里插入图片描述

  • 定义:通过PhantomReference类实现,且必须配合ReferenceQueue使用,PhantomReference<Object> phantomRef = new PhantomReference<>(new Object(), referenceQueue);在这里插入图片描述

  • 回收时机:虚引用随时可能被垃圾回收器回收,它主要用于跟踪对象的垃圾回收状态,而不是实际引用对象。

  • 应用场景:对象回收后的资源释放等特殊场景,如直接内存的释放跟踪。

通过对JVM垃圾回收器的全面了解,尤其是G1回收器的深入剖析,以及四种引用类型的详细对比,开发者能更好地理解Java内存管理机制,优化程序性能,避免内存相关的问题,编写出更高效、稳定的Java应用程序。

http://www.dtcms.com/wzjs/192204.html

相关文章:

  • 网站集约化建设推进情况运营商大数据精准营销获客
  • 建网站做淘宝客赚钱吗百度投放广告一天多少钱
  • 咸阳北京网站建设网络营销推广微信hyhyk1效果好
  • 南京软件定制开发时空seo助手
  • 网站wap怎么做营销策划有限公司经营范围
  • 建设网站制作汉狮团队品牌推广工作内容
  • 做网站的专业公司百度链接地址
  • 怎么做淘宝网站赚钱吗设计素材网站
  • 做网站需要模板吗网络推广平台几大类
  • 搜索动图素材的网站全网营销平台有哪些
  • 和网站建设签合同数据分析师需要学哪些课程
  • 做网站需要什么手续百度指数平台
  • 织梦如何修改网站内容百度公司的发展历程
  • 东莞本地招聘网站品牌营销策略论文
  • 微商网站模板seo优化公司信
  • 自己做免费手机网站全媒体运营师
  • 网站建设合同模板下载免费关键词排名优化
  • 有哪些公司建设网站网络营销相关的岗位有哪些
  • 为什么做的网站别的浏览器打不开怎么办搜索引擎优化入门
  • 公司注册官方网站百度公司是国企还是私企
  • 多个网站对比表格怎么做精准的搜索引擎优化
  • 网站顶部flash如何通过网络营销自己
  • 国外psd免费下载网站怎么弄一个网站
  • 沈阳人流需要多少钱大概多少钱整站排名优化品牌
  • 高校英文网站建设广告的六种广告形式
  • 开发网站需要哪些技术人员百度快速收录技术
  • 中企动力做的网站后台怎么登录百度快照怎么用
  • 义乌高端网站建设游戏优化大师官网
  • 台州建设局招标投标网站怎么做网络平台
  • 手机移动端网站案例网络营销服务商