JVM的垃圾回收机制和Golang的垃圾回收机制

本文探讨了JVM和Golang的垃圾回收机制,包括可达性分析算法、引用计数算法、标记-清除、复制、分代收集等JVM算法,以及Golang的mark and sweep算法。分析了两种语言在垃圾回收中的相似点和不同点,以及各自的发展趋势。
摘要由CSDN通过智能技术生成

JVM的垃圾回收机制和Golang的垃圾回收机制


前言

为什么要写这篇文章,在仔细的了解了jvm垃圾回收机制和Golang的回收机制之后发现其有很多的相同点和不同点,未来的发展会不会有共通之处,这是我的想法。


一、 哪些内存需要回收

在弄清答案之前我们首先要知道什么样数据我们是可以回收的。

JVM的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。
其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生、随线程而灭,因此这几个区域的内存分配和回收都具备确定性,就不需要过多考虑回收的问题
Java堆区和方法区则不一样,内存的分配和回收是动态的所以针对这部分区域有一些特定的算法。

二、算法

2.1可达性分析算法

在这里插入图片描述
简单的说法就是看其是否于GCRoot相连,如果不相连我们认为其可回收。
在Java语言中,可作为GC Roots的对象包括下面几种:
1、虚拟机栈中引用的对象(栈帧中的本地变量表);
2、方法区中类静态属性引用的对象;
3、 方法区中常量引用的对象;
4、本地方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值