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 实现。
最后,知其然知其所以然。