1.erlang启动时直接设置-pa参数,指定code path,也就是各个model编译出来的beam文件的目录
2.erlang启动时-s参数,系统初始化的时候执行的启动函数,可以写多个,按先后顺序执行,是MFA格式
3.启动后,就建立了app<--->module的映射,一个app中加载了哪些module可以通过code:all_loaded()函数打印出来
4.热更有时,通过erl_call的code命令来操作
1)soft_purge,如果当前没有进程用到module的old代码,那就直接将module的old版本删除,将current代码转变为old版本,否则返回false
2)load_file,加载新的module代码当做current版本,如果此时发现还有old版本,那就直接报错not_purged
其中第一步如果是purge,那么如果发现有进程正在用old代码,直接kill进程 ,然后将old代码删除,将current转为old。
刚启动后的第一次热更,因为没有old状态,所以肯定可以热更成功,当前代码转换为old,新代码变成current。
本文详细介绍了Erlang在启动时如何通过-pa参数设置codepath,以及使用-s参数执行初始化函数。讨论了Erlang应用与模块的映射关系,并阐述了热更新过程,包括soft_purge和load_file步骤。在热更新中,如果存在旧代码被使用,会进行进程清理以确保更新成功。首次热更新由于没有旧状态,因此总是能成功。
1032

被折叠的 条评论
为什么被折叠?



