d**********x 发帖数: 4083 | 1 chrome组就聊到了怎么实现小对象的memory pool。。。 |
p*****2 发帖数: 21240 | |
d**********x 发帖数: 4083 | 3 您还没动手啊。。
【在 p*****2 的大作中提到】 : 确实是相关的。有相关背景拿offer更容易
|
p*****2 发帖数: 21240 | 4
北边没让我面,南边被我剧了
【在 d**********x 的大作中提到】 : 您还没动手啊。。
|
g*********e 发帖数: 14401 | 5 小对象有什么特别吗?
我能想到的就是把他们放在一个pool里 |
d**********x 发帖数: 4083 | 6 比如说每个对象都是4 bytes的,如何实现malloc和free
【在 g*********e 的大作中提到】 : 小对象有什么特别吗? : 我能想到的就是把他们放在一个pool里
|
r*******e 发帖数: 7583 | 7 让malloc/free专门维护一个4B的free list?
我知道有些custom mem allocator分专门的大中小obj free list
更多细节就不知道了
【在 d**********x 的大作中提到】 : 比如说每个对象都是4 bytes的,如何实现malloc和free
|
g*********e 发帖数: 14401 | 8
我能想到的是 让程序自己维护一个全局的buffer 用这个buffer来作为缓存。这样
malloc只要在buffer里malloc即可 不需要system call。buffer满了就整个copy到内存
里 清空buffer。
读/free的话首先确定要读的obj在不在缓存里,在就直接读,不在就swap成包含obj的
缓存。
tricky的地方是需要确定obj在缓存里还是只在内存里。
【在 r*******e 的大作中提到】 : 让malloc/free专门维护一个4B的free list? : 我知道有些custom mem allocator分专门的大中小obj free list : 更多细节就不知道了
|
s*****n 发帖数: 5488 | 9 malloc一个对象的overhead好想是32bytes.这个大家可以放狗。
那么着就太贵了。而且会造成内存碎片。
如果很小。不如做成固定大小的slot. 改external fragment为internal fragment.
另外一个问题是garbage collection.改成page table方式加上bitmap.
应该不用compact。
基本还是OS书上的内容吧。
【在 g*********e 的大作中提到】 : 小对象有什么特别吗? : 我能想到的就是把他们放在一个pool里
|
s********k 发帖数: 6180 | 10 贵的还不止这个,malloc后面可能用到的system call比如brk,还有MMAP之类的都挺贵
的。
【在 s*****n 的大作中提到】 : malloc一个对象的overhead好想是32bytes.这个大家可以放狗。 : 那么着就太贵了。而且会造成内存碎片。 : 如果很小。不如做成固定大小的slot. 改external fragment为internal fragment. : 另外一个问题是garbage collection.改成page table方式加上bitmap. : 应该不用compact。 : 基本还是OS书上的内容吧。
|