python内存管理机制原理详解

 更新时间:2019年08月12日 11:10:17   作者:小白龙i  
这篇文章主要介绍了python内存管理机制原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

python内存管理机制:

  • 引用计数
  • 垃圾回收
  • 内存池

1. 引用计数

当一个python对象被引用时 其引用计数增加 1 ; 当其不再被变量引用时 引用计数减 1 ; 当对象引用计数等于 0 时, 对象被删除(引用计数是一种非常高效的内存管理机制)

2. 垃圾回收

垃圾回收机制: ① 引用计数 , ②标记清除 , ③分带回收

引用计数 :

引用计数也是一种垃圾收集机制, 而且也是一种最直观, 最简单的垃圾收集技术.当python某个对象的引用计数降为 0 时, 说明没有任何引用指向该对象, 该对象就成为要被回收的垃圾了.(如果出现循环引用的话, 引用计数机制就不再起作用了)

标记清除 :

如果两个对象的引用计数都为 1 , 但是仅仅存在他们之间的循环引用,那么这两个对象都是需要被回收的, 也就是说 它们的引用计数虽然表现为非 0 , 但实际上有效的引用计数为 0 ,.所以先将循环引用摘掉, 就会得出这两个对象的有效计数.

分带回收 :

从前面“标记-清除”这样的垃圾收集机制来看,这种垃圾收集机制所带来的额外操作实际上与系统中总的内存块的数量是相关的,当需要回收的内存块越多时,垃圾检测带来的额外操作就越多,而垃圾回收带来的额外操作就越少;反之,当需要回收的内存块越少时,垃圾检测就将比垃圾回收带来更少的额外操作。

3.内存池

内存池机制: python 中分为大内存和小内存: 256k为界限

大内存使用malloc 进行分配

小内存使用内存池是进行分配

python的内存池金字塔:

第3层: 最上层, 用户对python对象的直接操作

第1层和第2层: 内存池, 有python 的 接口函数 PyMen_Malloc 实现, 若请求分配的内存在1 - 256字节之间就使用内存池进行分配, 调用malloc 函数分配内存, 但是每次只会分配 256 k 的内存. 不会调用free 函数释放内层. 将该内存块留在内存池中便下次使用

第 0 层: 大内存 . 若请求分配的内存大于 256 k , malloc函数分配, free函数释放内存

第 - 1 -2 层: 操作系统进行操作

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python中Tkinter布局管理grid的使用

    Python中Tkinter布局管理grid的使用

    本文主要介绍了Python中Tkinter布局管理grid的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • matplotlib.pyplot.plot()参数使用详解

    matplotlib.pyplot.plot()参数使用详解

    这篇文章主要介绍了matplotlib.pyplot.plot()参数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • python是否适合网页编程详解

    python是否适合网页编程详解

    在本篇文章里我们给各位整理了一篇关于python是否适合网页编程详解内容,有需要的朋友们可以学习下。
    2019-10-10
  • pandas使用之宽表变窄表的实现

    pandas使用之宽表变窄表的实现

    这篇文章主要介绍了pandas使用之宽表变窄表的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 关于Python中几个有趣的函数和推导式解析

    关于Python中几个有趣的函数和推导式解析

    这篇文章主要介绍了关于Python中几个有趣的函数和推导式解析,推导式comprehensions,又称解析式,是Python的一种独有特性,推导式是可以从一个数据序列构建另一个新的数据序列的结构体,需要的朋友可以参考下
    2023-08-08
  • Python中利用all()来优化减少判断的实例分析

    Python中利用all()来优化减少判断的实例分析

    在本篇文章里小编给大家整理的是一篇关于Python中利用all()来优化减少判断的实例分析内容,有需要的朋友们可以学习下。
    2021-06-06
  • pygame游戏之旅 调用按钮实现游戏开始功能

    pygame游戏之旅 调用按钮实现游戏开始功能

    这篇文章主要为大家详细介绍了pygame游戏之旅的第12篇,教大家调用按钮实现游戏开始功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Python爬取阿拉丁统计信息过程图解

    Python爬取阿拉丁统计信息过程图解

    这篇文章主要介绍了Python爬取阿拉丁统计信息过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 玩转python爬虫之cookie使用方法

    玩转python爬虫之cookie使用方法

    Cookie用于服务器实现会话,用户登录及相关功能时进行状态管理,这篇文章主要介绍了使用python处理cookie的方法,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 如何使用ChatGPT搭建AI网站

    如何使用ChatGPT搭建AI网站

    ChatGPT是一种基于人工智能技术的聊天机器人,可以用于搭建AI网站。本文将介绍如何使用ChatGPT搭建AI网站,包括安装ChatGPT、创建聊天机器人、添加自定义功能等。
    2023-03-03

最新评论