cache的销毁很简单,依次检查和释放本地CPU cache、共享cache、三链以及cache本身。从cache的创建我们看到,创建的cache主要是从cache_cache中获得的,因为cache_cache中对象的大小就是cache结构体的大小,所以这里只是释放到cache_cache就OK了。
[cpp] - static void __kmem_cache_destroy(struct kmem_cache *cachep)
- {
- int i;
- struct kmem_list3 *l3;
- /* 释放每个cpu local cache使用的struct array_cache对象
- ,注意此时是online cpu, cpu如果是down状
- 态,并没有释放 */
- for_each_online_cpu(i)
- kfree(cachep->array[i]);
-
- /* NUMA: free the list3 structures */
- for_each_online_node(i) {/*对每个在线的节点*/
- l3 = cachep->nodelists[i];
- if (l3) {
- /* 释放shared local cache使用的struct array_cache对象 */
- kfree(l3->shared);
- free_alien_cache(l3->alien);
- kfree(l3);/*释放三链*/
- }
- }
- /*释放cache,因为该cache为cache_cache中的对象,所以调用对象释放
- 函数*/
- kmem_cache_free(&cache_cache, cachep);
- }
Linux内存管理之slab机制(创建cache)Linux内存管理之slab机制(概述)相关资讯 Linux内存管理
- Linux内存管理详述 (今 13:45)
- Linux内存管理精述 (01月18日)
- Linux内核——内存管理 (08/10/2014 09:18:23)
| - Linux系统的内存管理 (08月14日)
- Linux内存管理-free学习心得 (02/16/2015 11:18:00)
- Linux基础篇之内存管理机制 (03/16/2014 13:53:30)
|
本文评论 查看全部评论 (0)