您的位置:首页 > 其它

关于热更新的东西

2014-08-12 19:24 176 查看
这几天读了这个blog,进一步深入的了解了关于erlang更新相关的东西
http://blog.csdn.net/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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: