/*
* Heap sizes start growing in a Fibonacci sequence.
*
* Fib growth is not really ok for really large heaps, for
* example is fib(35) == 14meg, whereas fib(36) == 24meg;
* we really don't want that growth when the heaps are that big.
*/
erlang的process heap堆大小默认是233 等于fib(11), 用fib算法的目的是后续的heap增长会比较慢 避免内存的浪费。
大多数的系统都是以上为2倍数增长的。有人对std:string做过统计分析,最后得出一个结论是 1.5 是比较合适的数字。
erlang用这个算法个人感觉体现这个系统的成熟。
* Heap sizes start growing in a Fibonacci sequence.
*
* Fib growth is not really ok for really large heaps, for
* example is fib(35) == 14meg, whereas fib(36) == 24meg;
* we really don't want that growth when the heaps are that big.
*/
erlang的process heap堆大小默认是233 等于fib(11), 用fib算法的目的是后续的heap增长会比较慢 避免内存的浪费。
大多数的系统都是以上为2倍数增长的。有人对std:string做过统计分析,最后得出一个结论是 1.5 是比较合适的数字。
erlang用这个算法个人感觉体现这个系统的成熟。
本文探讨了Erlang中进程堆的管理方式及其增长策略。通过采用Fibonacci序列来控制堆的增长速度,有效避免了内存浪费。此外,文章还对比了不同增长比例对于内存使用的影响。
1536

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



