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

本文深入探讨了缓存销毁过程,包括本地CPU缓存、共享缓存、三链及自身缓存的释放方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值