发布时间:2011-10-08 16:06:37
我们在看看Carve函数,Carve函数将span从normal list中切出,返回给Populate。首先将span的location为置位为Span::IN_USE,然后判断这个span的长度是否真好为n,如果大于n那么将span切割成两个span......【阅读全文】
发布时间:2011-10-08 16:05:27
下面我们来看看FetchFromSpans和Populate两个函数。FetchFromSpans首先判断CentralFreeList的nonempty_列表中是否有可用的span如果没有则返回NULL,否则取nonempty_第一个span,然后将span中切出一个obj,......【阅读全文】
发布时间:2011-10-08 16:02:54
到此为止ThreadCache::GetCache函数分析完毕,那么我们返回do_malloc函数,首先判断size是否小于kMaxSize(8u * kPageSize),这个是区分要分配的是large object还是small obj。如果是small obj,......【阅读全文】
发布时间:2011-10-08 16:00:41
完成InitModule的解释,我们返回函数inline ThreadCache* ThreadCache::GetCache,由于ptr为null,那么调用:CreateCacheIfNecessary创建一个threadcache。......【阅读全文】
发布时间:2011-10-08 15:59:01
以上过程是span_allocator_.Init()函数的行为,到此已经分析完毕,下面我们继续看Static::InitStaticVars函数,次函数接着将会调用函数stacktrace_allocator_.Init();......【阅读全文】