erlang垃圾收集器不会收集基元是erlang到一个内存管理特性
2012-04-23 22:48 rhinovirus 阅读(658) 评论(0) 收藏 举报erlang垃圾收集器不会收集基元是erlang到一个内存管理特性。一旦你生成了一个基元,那么不管代码中是否被引用它都会停留在基元表里。
如果决定在一个瞬时的进程注册别名,而该别名是通过内置函数 list_to_atom把一个字符串转换为一个基元而得到的,这就可能是一个潜在的问题。
如果每天有数以百万计的用户登录系统,而你为他们到每一个会话都建立一个已注册的进程,那么请不要惊讶最终将耗尽内存。
把用户到进程标识符的映射保存到一个会话表(session table)中对于你可能会更好些。最好是只注册生命周期长到进程,如果你真到必须将字符
串转换为一个别名,请使用 list_to_existing_atom/1,用以确保你的系统不会遭受内存泄漏。
摘自《Erlang编程指南》 109页
本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名rhinovirus(包含链接http://www.cnblogs.com/rhinovirus/),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系。
浙公网安备 33010602011771号