python垃圾回收&缓存机制

简介: python垃圾回收&缓存机制

1.垃圾回收机制?

   计数器为主,标记清楚和分代回收为辅;

   1.1底层结构

     所有的对象都会放在refchain的双向循环链表中。

       每一个对象都等于结构体

       typedef obj{

         上一个指针

         下一个指针

         引用个数

         数值类型

         值

        }

   1.2计数器

     创建的时候计数器为1

     被引用,则计数器加一

     删除引用,则计数器减一

     bug:循环引用会有问题?

         a = []

         b = []

         a.append(b)

         b.append(a)

         del a

         del b

   1.3标记清除

     会把有循环引用的对象放在另外一个双向循环链表中,

     某种条件会触发,去扫描,如果存在循环引用,则计数器-1

     bug:

       什么时候扫描

       扫描代价太大

   1.4分代回收

     将标记清楚的链表  变成三个链表

     0代:对象有700个扫描一次

     1代:0代扫描10次则触发

     2代:1代扫描10次则触发

 

2缓存机制:

 2.1缓存池(整形,字符):【-5,257】都是常用的不会创建对象,都会在小数据池

 2.2free_list(字典,列表,元组,字符串)(有个数限制):当对象成为垃圾的时候不会被清除,而会放在free_list里面,等下次用的时候,

   就不需要重新开辟空间了;


相关文章
|
30天前
|
缓存 应用服务中间件 nginx
Web服务器的缓存机制与内容分发网络(CDN)
【8月更文第28天】随着互联网应用的发展,用户对网站响应速度的要求越来越高。为了提升用户体验,Web服务器通常会采用多种技术手段来优化页面加载速度,其中最重要的两种技术就是缓存机制和内容分发网络(CDN)。本文将深入探讨这两种技术的工作原理及其实现方法,并通过具体的代码示例加以说明。
78 1
|
7天前
|
存储 缓存 Android开发
Android RecyclerView 缓存机制深度解析与面试题
本文首发于公众号“AntDream”,详细解析了 `RecyclerView` 的缓存机制,包括多级缓存的原理与流程,并提供了常见面试题及答案。通过本文,你将深入了解 `RecyclerView` 的高性能秘诀,提升列表和网格的开发技能。
27 8
|
15天前
|
消息中间件 安全 Kafka
Python IPC机制全攻略:让进程间通信变得像呼吸一样自然
【9月更文挑战第12天】在编程领域,进程间通信(IPC)是连接独立执行单元的关键技术。Python凭借简洁的语法和丰富的库支持,提供了多种IPC方案。本文将对比探讨Python的IPC机制,包括管道与消息队列、套接字与共享内存。管道适用于简单场景,而消息队列更灵活,适合高并发环境。套接字广泛用于网络通信,共享内存则在本地高效传输数据。通过示例代码展示`multiprocessing.Queue`的使用,帮助读者理解IPC的实际应用。希望本文能让你更熟练地选择和运用IPC机制。
38 10
|
2天前
|
存储 算法 Java
关于python3的一些理解(装饰器、垃圾回收、进程线程协程、全局解释器锁等)
该文章深入探讨了Python3中的多个重要概念,包括装饰器的工作原理、垃圾回收机制、进程与线程的区别及全局解释器锁(GIL)的影响等,并提供了详细的解释与示例代码。
9 0
|
17天前
|
消息中间件 安全 数据库
动手实操!Python IPC机制,打造高效协同的进程军团
【9月更文挑战第10天】在软件开发领域,进程间的高效协作对应用性能与稳定性至关重要。Python提供了多种进程间通信(IPC)机制,如管道、消息队列、套接字、共享内存等,帮助开发者构建高效协同的系统。本文将通过动手实践,使用`multiprocessing`模块演示如何利用队列实现进程间通信。示例代码展示了如何创建一个工作进程从队列接收并处理数据,从而实现安全高效的进程交互。通过实际操作,读者可以深入了解Python IPC的强大功能,提升系统的并发处理能力。
31 0
|
26天前
|
存储 缓存 JavaScript
深入理解后端开发中的缓存机制
【8月更文挑战第31天】本文将通过一个实际的后端开发案例,介绍如何有效地使用缓存来提高应用性能。我们将从基础概念开始,逐步深入到缓存策略的实施,最后通过代码示例展示如何在Node.js环境中实现一个简单的缓存系统。无论你是缓存新手还是希望优化现有系统的开发者,这篇文章都将为你提供实用的指导和启示。
|
29天前
|
缓存 Python
Python中更好用的函数运算缓存
Python中更好用的函数运算缓存
|
30天前
|
算法 Java 开发者
Python垃圾回收机制
Python垃圾回收机制
|
1月前
|
存储 缓存 关系型数据库
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
34 0
|
1月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】 Python连接Azure Redis, 使用redis.ConnectionPool 出现 "ConnectionResetError: [Errno 104] Connection reset by peer"
【Azure Redis 缓存】 Python连接Azure Redis, 使用redis.ConnectionPool 出现 "ConnectionResetError: [Errno 104] Connection reset by peer"