歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux內存管理之slab機制(銷毀cache)

Linux內存管理之slab機制(銷毀cache)

日期:2017/2/28 15:59:49   编辑:Linux教程

cache的銷毀很簡單,依次檢查和釋放本地CPU cache、共享cache、三鏈以及cache本身。從cache的創建我們看到,創建的cache主要是從cache_cache中獲得的,因為cache_cache中對象的大小就是cache結構體的大小,所以這裡只是釋放到cache_cache就OK了。

[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. /* NUMA: free the list3 structures */
  11. for_each_online_node(i) {/*對每個在線的節點*/
  12. l3 = cachep->nodelists[i];
  13. if (l3) {
  14. /* 釋放shared local cache使用的struct array_cache對象 */
  15. kfree(l3->shared);
  16. free_alien_cache(l3->alien);
  17. kfree(l3);/*釋放三鏈*/
  18. }
  19. }
  20. /*釋放cache,因為該cache為cache_cache中的對象,所以調用對象釋放
  21. 函數*/
  22. kmem_cache_free(&cache_cache, cachep);
  23. }
Copyright © Linux教程網 All Rights Reserved