| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> JVM-(6)JVM GC -> 正文阅读 |
|
[Java知识库]JVM-(6)JVM GC |
JVM GCGC (Gabage Collection),即垃圾收集器 什么是垃圾没有引用指向的对象就可以称为垃圾 Java 与 C++ 垃圾处理异同如何寻找垃圾① 引用计数法 (reference count) ???????在对象中添加一个引用计数器,每当有一个地方引用它时,计数器的值就会加一;当引用失效时,计数器的值就会减一;只要任何时刻计数器为零的对象就是不会再被使用的对象。虽然这种判断方式非常简单粗暴,但是往往很有用,不过,在 Java 领域,主流的 Hotspot 虚拟机实现并没有采用这种方式,因为引用计数法不能解决对象之间的循环引用问题 循环引用即 对象 A 与 对象 B 相互引用,虽然对象A与对象B的引用计数器数量都不为0,但是却没有其他引用指向A或B,那么这里的对象A和对象B都是垃圾 ② 根可达性算法 (Root Searching) 当前主流的 JVM 都采用了可达性分析算法来进行判断,这个算法的基本思路就是通过一系列被称为GC Roots的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程走过的路径被称为引用链(Reference Chain),如果某个对象到 GC Roots 之间没有任何引用链相连接,或者说从 GC Roots 到这个对象不可达时,则证明此这个对象是无用对象,需要被垃圾回收。
深入理解看这篇:https://blog.csdn.net/qq_44802992/article/details/109909988 垃圾清除算法① 标记清除 Mark Sweep
标记清除算法缺陷: 1)产生内存碎片,回收的内存并不连续,难以管理。 ② 标记复制算法将内存大小划分为相等的两块,每次只使用其中一块,当内存使用完时将存活的对象复制到另一块,然后将这块内存空间清除 标记复制算法解决了内存碎片化的问题,但是空间浪费问题很明显,适用于存活对象较少的情况 ② 标记压缩算法 Mark Compact标记-复制算法虽然解决了内存碎片问题,但是没有解决复制对象存在大量开销的问题。为了解决复制算法的缺陷,充分利用内存空间,提出了标记-整理算法。该算法标记阶段和标记-清除一样,但是在完成标记之后,它不是直接清理可回收对象,而是将存活对象都向一端移动,然后清理掉端边界以外的内存。 参考: https://baijiahao.baidu.com/s?id=1713113300105186800&wfr=spider&for=pc |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 22:33:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |