资讯动态

什么是GC?GC的算法有哪些?一文详解

发布时间:2026/9/20 11:36:49 来源:尧图企业网站定制
一.GC详解1.概念GC就是“垃圾回收”是Java的特性。2.怎么执行的是手动还是自动垃圾回收是自动执行的。而手动的方式只能进行提醒操作而不能进行垃圾回收。3.该动作发生在JVM的哪片区域只发生在堆GC只发生在堆。注意方法区也属于堆的范畴原因为什么栈不需要垃圾回收堆需要垃圾回收一文详解-CSDN博客①堆分为哪些区新生区(Young Generation)一句话描述它是新对象的“出生地”绝大多数刚new出来的对象都会首先被分配到这里(注它内部其实还包含 Eden 区和幸存区)。幸存区(Survivor Space)一句话描述它是新生区里的“缓冲带”专门用来暂时存放那些经过垃圾回收后依然存活、但还没资格变老的对象。老年区(Old Generation)一句话描述它是长期存活对象的“归宿”存放那些在幸存区熬过了多次回收依然没被清理掉的“长寿”对象。②GC具体发生在堆的哪个区这三个区都会发生GC但是频率不同。平时GC 主要发生在新生区和幸存区此时进行的是轻GC也叫普通GC快速清理垃圾说白了就是没事勤快点简单打扫打扫所以频率比较高。实在扛不住了当对象太多幸存区装不下或者老年区满了才会触发特别针对老年区的全面大扫除此时进行的是重GC全局GC。注意全局GC时的绝大部分都给了老年区而新生区和幸存区也会打扫但是占比比较少。所以才说“针对”老年区。4.GC分为哪两种类型①轻GC普通GC/Minor GC指仅针对新生区和幸存区进行的快速回收专门负责清理那些生命周期极短的“朝生暮死”对象。②重GC全局GC/Major or Full GC指针对老年区或包含新生区在内的整个堆内存进行的全面回收通常因老年代空间不足而触发耗时较长且会导致程序暂停。二.GC的算法有哪些1.引用计数法①定义这是一种非常直观的内存管理算法它的核心思想是为每个对象维护一个“计数器”用来实时记录当前有多少个引用正在指向该对象每当有一个新引用指向它时计数就加1引用失效时计数就减1一旦计数器归零就意味着该对象不再被使用可以立即被回收。②举例③使用频率几乎不用④优缺点优点回收非常及时且没有长时间的停顿缺点无法处理对象之间相互引用的“循环引用”问题即两个对象互相引用但外部已不再访问这会导致内存泄漏因此主流的 Java 虚拟机并没有采用这种算法。以上就是本篇文章的全部内容喜欢的话可以留个免费的关注呦~~~

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价