本文介绍: Java虚拟机的垃圾收集器是内存回收的具体实现,主要用于回收不再使用的对象,释放内存空间。Java虚拟机提供了多种垃圾收集器,不同的垃圾收集器适用于不同的场景和需求。在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾收集意味着程序不再需要的对象是”无用信息“,这些信息将被丢弃。
什么是垃圾收集器
Java虚拟机的垃圾收集器是内存回收的具体实现,主要用于回收不再使用的对象,释放内存空间。Java虚拟机提供了多种垃圾收集器,不同的垃圾收集器适用于不同的场景和需求。
在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾收集意味着程序不再需要的对象是”无用信息“,这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用的对象,垃圾收集也可以清除内存记录碎片。由于创建对象和垃圾收集器释放丢弃对象所占的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存洞。碎片整理将所占用的堆内存移到堆的一端,JVM将整理出的内存分配给新的对象。
这篇文章只分享Serial收集器、Parallel Scavenge收集器、ParNew收集、CMS收集器,G1和ZGC会在后续文章更新。
在讲解垃圾收集器前,优先了解垃圾收集算法、垃圾判断算法、Java中的四种引用类型。
Java中常见引用类型
java的引用类型一般分为四种:强引用、软引用、弱引用、虚引用。
强引用: 强引用是平常使用最多的引用,强引用在程序内存不足时也不会被回收,使用方式:
垃圾判断算法
引用计数法
可达性分析算法
垃圾收集算法
分代收集理论
标记-复制算法
标记-清除算法
标记-整理算法
垃圾收集器
Serial收集器
Parallel Scavenge收集器
ParNew收集器
CMS收集器
垃圾收集底层算法实现
三色标记
多标-浮动垃圾
漏标-读写屏障
记忆集与卡表
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。