首页 > 编程语言 >jvm垃圾回收与算法

jvm垃圾回收与算法

时间:2022-11-11 15:15:30浏览次数:55  
标签:对象 回收 计数法 算法 GC 垃圾 jvm 可达性 引用

1 如何确定垃圾

java 采用引用计数法与可达性分析来确定是否回收垃圾。其中引用计数法会容易产生循环引用的问题。可达性分析通过根搜索算法来实现。根

搜索算法以一系列GC Root s 的点作为起点向下搜索,在一个对象到任何GC Root s 都没
有引用链相连时,说明其已经死亡。

 

 2   接下来来谈谈  引 用计数法循环引用的问题

在Java 中如果要操作对象,就必须先获取该对象的引用,因此可以通过引用计数法
来判断一个对象是否可以被回收。在为对象添加一个引用时,引用计数加l ;在为对象删
除一个引用时, 引进计数减l ;如果一个对象的引用计数为0 ,则表示此刻该对象没有被
引用,可以被回收。
引用计数法容易产生循环引用问题。循环引用指两个对象相互引用,导致它们的引
用一直存在,而不能被回收,

如图1 - 7 所示, Object !与Object2 互为引用,如果采用引
用计数法,则Object I 和Object2 由于互为引用,其引用计数一直为l ,因而无法被回收。

 

 

 可达性分析为了解决引用计数法的循环引用问题, Java 还采用了可达性分析来判断对象是否可以被回收。

 

具体做法是首先定义一些GC Root s 对象,然后以这些GC Roots 对象作为起
点向下搜索,如果在GC roots 和一个对象之间没有可达路径, 则称该对象是不可达的。
不可达对象要经过至少两次标记才能判定其是否可以被回收,如果在两次标记后该对象
仍然是不可达的,则将被垃圾收集器回收。

标签:对象,回收,计数法,算法,GC,垃圾,jvm,可达性,引用
From: https://www.cnblogs.com/labimeilexin/p/16880483.html

相关文章

  • .net 自动摘要等算法 HanLP.net
    HanLP.net参考资料:​​http://www.hankcs.com/nlp/call-hanlp-in-csharp.html​​ 目前自动摘要算法似乎没有.net版本,而以java,python居多 ......
  • .net 自动分类算法【原创】
    自行根据网上论文研发的自动分类算法,欢迎交流,实践和完善。目前自动分类算法是参考网上的思路和想法个人自主研发的。当然互联网上有很多人采用不同......
  • 【MongoDB】复制集 相关 (bully算法)
    复制集技术相比较传统的Master-Slave模式好处在于多了容错机制。所以MongoDB的复制集技术主要为用户解决了两大问题:第一就是primary节点挂了,其余的secondary节点会自动选举......
  • 【数据结构与算法】ip转int
    思路比较简单,但是有一些坑。classErrorextendsException{/****/privatestaticfinallongserialVersionUID=1L;Stringmsg;Error(Stringmsg){th......
  • 【Java】垃圾回收机制 GC
    GC是java中比较有特色的技术,减轻了程序员的负担。当然也是面试中的高频话题。对于垃圾回收,首先要解决的是找出哪些对象是需要回收的。第一个方法是计算引用数目,实现比较简单......
  • Java实现算法之--选择排序
        选择排序也是比较简单的一种排序方法,原理也比较容易理解,它与冒泡排序的比较次数相同,但选择排序的交换次数少于冒泡排序。冒泡排序是在每次比较之后,若比较的两个......
  • nginx tls 1.2禁用弱算法
    背景项目安全扫描出现的漏洞,记录一下修复过程。HTTPS协议缺陷整改首先考虑TLS1.3目前版本太新,兼容性未知,同时机房的WAF等安全设备是否支持该协议。先咨询机房......
  • 实验三:朴素贝叶斯算法实验
    【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预测;熟悉s......
  • 实验三:朴素贝叶斯算法
    【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预测;熟悉s......
  • 学习笔记-综合案例,hook时机 ,制作dex,算法还原思路
    综合实战spawn/attach时机的选择各种主动调用/直接撸完各种hook以及构造函数动态加载自己的dexz3:约束求解/符号执行0x01通过案例来进行实战1.这里又放了个新......