avatar

刘刚刚的blog

采菊东篱下,悠然见南山🦥

  • 首页
  • 大模型应用
  • 常用软件/工具
  • Halo
  • 关于
Home python-垃圾回收机制(GC)
文章

python-垃圾回收机制(GC)

Posted 2020-06-12 Updated 2024-09- 27
By Administrator
2~2 min read

c中垃圾需要手动去回收,那么python中是如何去自动回收垃圾的呢?


在内存中,变量的值存放在堆区,变量的名称存放在栈区。GC管理的是堆区

引用计数

  • 直接引用

    将值直接赋值给变量

  • 间接引用

    将值赋值给类似列表的变量

​ 以上两种情况,值没被引用一次,则会增加一个引用计数,每减少一次则一个引用计数,当值的引用计数为0的时候,则GC会自动回收值的空间。

标记清除

​ 在循环引用时,比如:两个列表相互引用。在 del 掉两个列表的变量时,两个列表的值因为存在相互引用,所以值的引用计数不为0.此时,不能通过引用计数的方式回收产生的垃圾。

​ 在内存不够用的时候,GC会扫描栈区和堆区,查找堆区中没有被栈区变量引用到的值(即没有被变量直接引用或者间接引用到的值),然后删除。

分代回收

​ 为了提高标记计数的效率,GC在扫描时,如果多次都没有回收的变量,则认为改变量为常用变量,随着该变量的存活时间越长,GC对其扫描频率越低。

在GC回收过程中,主要是靠标记清楚机制进行垃圾回收,标记清除是对引用计数的补充,分代回收是对引用计数的优化。

License:  CC BY 4.0
Share

Further Reading

OLDER

1.python基础——变量与常量

NEWER

3.python基础——运算符

Recently Updated

  • 文本切分-语义分割(Semantic Chunking)
  • dify 并发配置优化
  • Typing
  • 大模型返回中json_schema与json_mode的区别
  • Async

Trending Tags

Halo 运维 postgresql 设计模式 linux就该这么学 nas rag odoo python 文本切分

Contents

©2025 刘刚刚的blog. Some rights reserved.

Using the Halo theme Chirpy