首页 > 编程语言 >垃圾收集策略与算法

垃圾收集策略与算法

时间:2023-06-30 12:33:34浏览次数:53  
标签:收集 对象 引用 回收 算法 内存 垃圾

垃圾收集策略与算法

程序计数器、虚拟机栈、本地方法栈随线程而生,也随线程而灭;栈帧随着方法的开始而入栈,随着方法的结束而出栈。这几个区域的内存分配和回收都具有确定性,在这几个区域内不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。

而对于 Java 堆和方法区,我们只有在程序运行期间才能知道会创建哪些对象,这部分内存的分配和回收都是动态的,垃圾收集器所关注的正是这部分内存。

判定对象是否存活

若一个对象不被任何对象或变量引用,那么它就是无效对象,需要被回收。

引用计数法

在对象头维护着一个 counter 计数器,对象被引用一次则计数器 +1;若引用失效则计数器 -1。当计数器为 0 时,就认为该对象无效了。

引用计数算法的实现简单,判定效率也很高,在大部分情况下它都是一个不错的算法。但是主流的 Java 虚拟机里没有选用引用计数算法来管理内存,主要是因为它很难解决对象之间循环引用的问题。(虽然循环引用的问题可通过 Recycler 算法解决,但是在多线程环境下,引用计数变更也要进行昂贵的同步操作,性能较低,早期的编程语言会采用此算法。)

举个栗子

标签:收集,对象,引用,回收,算法,内存,垃圾
From: https://www.cnblogs.com/wind-xwj/p/17516343.html

相关文章

  • HotSpot 垃圾收集器
    HotSpot垃圾收集器HotSpot虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。新生代垃圾收集器Serial垃圾收集器(单线程)只开启一条GC线程进行垃圾回收,并且在......
  • 敏感词过滤--DFA算法及代码案例
    我们应该都遇见过敏感词过滤,比如当我们输入一些包含暴力或者色情的文本,系统会阻止信息提交。敏感词过滤就是检查用户输入的内容有没有敏感词,检查之后有两个策略。直接阻止信息保存,接口返回错误信息允许信息保存,但是会把敏感词替换为***不管是哪种策略,首先都得找到是否包含敏......
  • Java 必会10大的经典算法
    Java必会10大的经典算法 https://github.com/hustcc/JS-Sorting-Algorithm冒泡排序:思路-两层循环;外层循环控制比较的轮数,内层循环控制每一轮的比较和交换。在每一轮中,通过比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置。经过多轮的比较和交换,......
  • 数据结构与算法 - 链表
    双链表的的基本结构从STL源码抽出的基本双链表结构代码#ifndef_GRAVER_GLIB_LIST_H_#define_GRAVER_GLIB_LIST_H_#include<cstddef>#include"graver/util/log_util.h"namespacegraver{//内部结构与方法放在detailnamespacedetail{/***@brief链表结......
  • prim算法
    #include<stdio.h>#defineN20#defineTRUE1#defineINF32766#defineINFIN32767typedefstruct{ intvexnum,arcnum; charvexs[N]; intarcs[N][N];}MGraph;voidcreateMGraph_w(MGraph*g);voidprim(MGraph*g,intu);//创建带权无向图的邻接矩阵void......
  • 数据结构和算法-2023.06.29
    斐波那契数列初衷......
  • 欧几里得(及其扩展算法)
    欧几里得算法算法内容计算两个数的最大公约数的算法,也叫辗转相除法。即:gcd(a,b)=gcd(b,a%b)。数学证明设gcd(a,b)=d,则必定有:d|a且d|b,则必定有d|(ax+by)而a%b=a-a/b*b,所以d|(a%b),则d必定为b和a%b的约数,并且a%b必定小于a则d必定为b和a%b的最大公约数。-代码实现优美,太优......
  • MATLAB代码:基于粒子群算法的储能优化配置 关键词:储能优化配置 粒子群 储能充放电优
    MATLAB代码:基于粒子群算法的储能优化配置关键词:储能优化配置粒子群 储能充放电优化 参考文档:无明显参考文档,仅有几篇文献可以适当参考仿真平台:MATLAB平台采用粒子群实现求解优势:代码注释详实,适合参考学习,非目前烂大街的版本,程序非常精品,请仔细辨识 主要内容:建立了储能的......
  • 电子凸轮追剪曲线生成算法
    电子凸轮追剪曲线生成算法。品牌:麦格米特(算法,理解后可转成其他品牌PLC或任何一种编程语言)只有程序原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/633554519425.html......
  • 音乐推荐系统 系统算法:基于用户的协同过滤推荐算法
    音乐推荐系统系统算法:基于用户的协同过滤推荐算法编程语言:python数据库:sqlite框架:MVCweb应用框架:Django解压就可以运行(自己需要有调试项目环境的能力),需要软件python和pycharm或者Anaconda项目有配套的文档原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/678695319073.......