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。