感谢支持
我们一直在努力

Linux内存管理之slab机制(销毁cache)

cache的销毁很简单,依次检查和释放本地CPU cache、共享cache、三链以及cache本身。从cache的创建我们看到,创建的cache主要是从cache_cache中获得的,因为cache_cache中对象的大小就是cache结构体的大小,所以这里只是释放到cache_cacheOK了。


[cpp]


  1. static void __kmem_cache_destroy(struct kmem_cache *cachep)  

  2. {  

  3.     int i;  

  4.     struct kmem_list3 *l3;  

  5.     /* 释放每个cpu local cache使用的struct array_cache对象 

  6.     ,注意此时是online cpu, cpu如果是down状 

  7.       态,并没有释放 */  

  8.     for_each_online_cpu(i)  

  9.         kfree(cachep->array[i]);  

  10.   

  11.     /* NUMA: free the list3 structures */  

  12.     for_each_online_node(i) {/*对每个在线的节点*/  

  13.         l3 = cachep->nodelists[i];  

  14.         if (l3) {  

  15.             /* 释放shared local cache使用的struct array_cache对象 */  

  16.             kfree(l3->shared);  

  17.             free_alien_cache(l3->alien);  

  18.             kfree(l3);/*释放三链*/  

  19.         }  

  20.     }  

  21.     /*释放cache,因为该cache为cache_cache中的对象,所以调用对象释放 

  22.     函数*/  

  23.     kmem_cache_free(&cache_cache, cachep);  

  24. }  

赞(0) 打赏
转载请注明出处:服务器评测 » Linux内存管理之slab机制(销毁cache)
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏