erlang源码参考

一些导读的文章。

1、数据类型的内存 http://www.erlang.org/doc/efficiency_guide/advanced.html

2、siyao同学一系列介绍数据类型实现的文章

Erlang数据类型的表示和实现(1)——数据类型回顾 http://www.cnblogs.com/zhengsyao/p/erlang_eterm_implementation_1.html

Erlang数据类型的表示和实现(2)——Eterm 和立即数 http://www.cnblogs.com/zhengsyao/p/erlang_eterm_implementation_2.html

Erlang数据类型的表示和实现(3)——列表 http://www.cnblogs.com/zhengsyao/p/erlang_eterm_implementation_3.html

Erlang数据类型的表示和实现(4)——boxed 对象 http://www.cnblogs.com/zhengsyao/p/erlang_eterm_implementation_4_boxed.html

Erlang数据类型的表示和实现(5)——binary http://www.cnblogs.com/zhengsyao/p/erlang_eterm_implementation_5_binary.html

3、Erlang/erts代码笔记 - 通用Hash表 http://blog.crackcell.com/posts/2012/08/13/erts_hash.html

4、Erlang原子(atom)的内部实现及应用 http://844604778.iteye.com/blog/1959554

5、Erlang中list和tuple的构建及转换的内部实现 http://blog.csdn.net/zhongruixian/article/details/9410193

主要还是看代码,导读仅仅就是给你开个头罢了。

题外话,去年,线上服务器出了atom爆掉的问题(但是后来说又不是,是其他问题),但是我们主程(算吧)看了litaocheng的开发杂记http://erlangdisplay.iteye.com/blog/374167 ,其中有一段,“* 避免使用list_to_atom/1,因为erlang中atom数量最大为1048576, 且不进行GC控制。因此如果持续性的调用list_to_atom/1 可能很容易达到系统上限,从而导致emulator terminate。请使用list_to_existing_atom/1。 ”,然后将list_to_atom改为catch list_to_existing_atom,崩了,再list_to_atom。现在看来,atom实现是基于index和hash,如果本身出现过的,index和hash是不会变,何来达到系统上限呢?详细可以看看qingliang的[erlang]list_to_atom与list_to_existing_atom http://www.qingliangcn.com/2014/04/erlang/ 或者自己去看https://github.com/erlang/otp/blob/maint/erts/emulator/beam/bif.c 实现。

最后,知其然知其所以然。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值