关于热更新的东西

本文深入探讨了使用Erlang进行代码更新时需要注意的关键点,特别是关于do_purge操作可能引发的问题以及如何确保进程安全执行的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这几天读了这个blog,进一步深入的了解了关于erlang更新相关的东西

http://blog.youkuaiyun.com/mycwq/article/details/43372687


使用代码更新的时候,有一点要注意

c:l()默认使用的do_purge(),do_purge有一个很危险的操作,就是会kill掉正在使用old代码的进程。

old代码是什么呢?

当代码加载进去的时候,erlang会为这份“代码"分配一块内存保存,然后让module的old指针指向的内容释放,current指针只想这块内存,同时把old指向原来的curr指针指向的内容。也就是说,erlang并不区分xxx.beam上的任何信息,是单纯把代码加载和替换。

为了保证进程的安全执行,就需要先把使用old代码的进程全部kill,然后把代码"版本"数据更新。

所以使用的时候,一定要小心,免得连续的更新代码导致进程被kill。








http://blogread.cn/it/article/5626?f=wb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值