13、内存管理、垃圾回收与有限状态机详解

内存管理、垃圾回收与有限状态机详解

内存管理与垃圾回收

在处理性能问题时,若怀疑可通过内存管理来解决,可在调整堆和垃圾回收器设置的同时对系统进行基准测试。以下是一些可更改的与内存相关的选项:
- min_heap_size :设置在触发垃圾回收器(gc)之前进程堆允许增长到的最大大小。此名称具有误导性,它实际上并非最小堆大小,而是触发gc前堆能达到的最大尺寸。
- min_bin_vheap_size :设置进程在共享二进制堆中允许使用的空间的初始和最小大小,当达到该大小后会触发对二进制数据的垃圾回收。
- fullsweep_after :确定在执行一次全堆垃圾回收之前需要进行的分代垃圾回收次数。

BEAM垃圾回收机制

从技术角度讲,Erlang的垃圾回收是一种基于每个进程的分代半空间复制收集器,它结合了Cheney的复制收集算法和全局大对象空间。简单来说,当一个进程用完其堆中分配的所有内存时,BEAM虚拟机将触发垃圾回收,把所有仍在使用的数据(存活数据)复制到一个新堆中,从而释放之前占用的所有空间。

垃圾回收器被称为分代式,是因为堆中经过两次扫描仍存活的数据会从“年轻堆”复制到“老堆”。其假设是,经过两次垃圾回收仍存活的数据很可能在未来的回收中也能存活。垃圾回收器总是从遍历年轻堆中的数据开始,将上一次垃圾回收后存活的数据复制到老堆,并创建一个新的年轻堆来存储剩余数据,原年轻堆中的所有内存将被释放。若年轻堆的垃圾回收无法释放足够的内存(或者没有足够的内存来复制年轻堆中的数据),则会触发全堆垃圾回收,这将检查并释放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值