3
我正在考虑在Go中实现内存缓存守护进程。它有可能获得一些严重的内存利用率(比如Terabyte)。碎片分割成单独的堆不是一个好的选择,我希望它在一个内存空间。有没有人有如此巨大的内存大小运行Go的经验? GC是否可以接受?去大内存垃圾收集性能
我正在考虑在Go中实现内存缓存守护进程。它有可能获得一些严重的内存利用率(比如Terabyte)。碎片分割成单独的堆不是一个好的选择,我希望它在一个内存空间。有没有人有如此巨大的内存大小运行Go的经验? GC是否可以接受?去大内存垃圾收集性能
我正在尝试做同样的事情,但是为缓存数据提供了良好性能的唯一项目是二进制树https://github.com/stathat/treap m,它在一台机器上支持超过1百万个内存节点Ubuntu 12.0.4 LTS with 8 GB内存。此外,它正在快速加载和搜索数据。
我测试的其他项目是LMDB但内存,kv,go-cache和goleveldb不支持多节点,但没有一个是因为从树堆内存更快地恢复数据。
鉴于您列出的要求,我会非常想用非GCed语言编写这样的程序。良好的缓存过期足够困难,不用担心GC。 – Evan
另外,如果您的需求很简单,您可能不需要自己执行任何操作; groupcache(https://github.com/golang/groupcache)可能只是你所需要的。 – Evan
@Evan我想到了groupcache;我很确定这不是我所需要的,因为我打算将相当多的处理逻辑放入我的“缓存”(例如聚合)中。问题是,我可以强制自己使用的语言并不多。在C++中这样做的想法让我感到害怕。 –