Go Go 语言内存分配器设计

skoo · 2013年10月08日 · 最后由 chrishine 回复于 2013年10月20日 · 5912 次阅读

http://www.bigendian123.com/go/2013/10/08/go-memory-manage-system-design/

听说 Go 的话题在这里会引起嘴仗,试试看。

其实,我说的是 C 语言,不是 Go,也不是 ruby。。。更不是 php。

有干货的帖子向来是受欢迎的。 有不同的看法进行讨论也很正常,平常心讨论就 OK 了。只是某个人的情绪没控制好,对别人进行人身攻击了,这样就不对了。

期待楼主更多干货的帖子。

对啊,非常欢迎这样带有干货的帖子,技术上可以进行深入探讨,只要不涉及人身攻击,PHP 也无妨。

#2 楼 @lgn21st 你最后一句是在黑我大 PHP!!!!LOL

#3 楼 @ch3n 谁说的?PHP 是最好的编程语言!

TCMalloc 可以提升 6 倍 malloc/free 一组命令的执行!..

Link 一下就能用了...

其实利用 tcmalloc 的 freelist, 只用 100 多行就能写个三色 tracing 增量 gc, 可见 go 的 stop-the-world gc 实现是有多朴素...

#5 楼 @Saito 单线程内 tcmalloc 消耗普通 malloc 的两倍时间,C99 的动态数组有时可以栈分配,比 malloc 快好几倍

#7 楼 @bhuztez 栈分配数组不一定增加栈大小,而且 ld 可以 -stack_size 指定栈大小

问下,为啥 Go map 最后一个元素也必须有",".
比如这里

var m = map[string]Vertex{
    "Bell Labs": {40.68433, -74.39967},
    "Google":    {37.42202, -122.08408},
}

不是很不合习惯么?

#9 楼 @chrishine 加个逗号好复制, 以前写代码总是要去掉最后一个逗号,有点麻烦

@Peter 仅仅是为了好复制,就和现行的习惯,比如 JSON 等相悖,感觉不太合情理呢。不过目前好像只有这一个解释. (-:

#11 楼 @chrishine 不加逗号就会自动加分号,这样下一行的}就被割开了。}不单独做一行就不需要逗号了。不是为了什么好复制

@reus 试了一下,果然如此. 多谢了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号