014 Python变量的内存管理

Python变量内存管理

1.变量存在哪里

1.如果我们定义了一个变量,而我们没有用python解释器取运行的时候,这个变量其实就是很普通的几个字符而已。而当我们用Python解释器取运行它的时候,那字符进入了内存,才会有变量这个概念。也就是说变量是存放在内存当中的。
2.但是说变量只是存在内存中并没有很具体,实际上在每定义一个变量就会在这个内存的大空间中开辟一个小空间

2.引用计数

1.引用计数是针对变量值的
2.比如定义一个变量
  height = 180
  x = height # x是在引用height,180的引用计数加1
  这个时候引用计数是为2,
  del x  释放的是引用计数,这时候180的引用计数为1
  del height 这个时候180的引用计数为0

3.垃圾回收机制

1.当我们定义一个有效的变量时,这时候会在内存中自动分配一个小的存储空间给我们定义的变量的值,但是当我们让变量名接收一个其它的值的时候,那我们一开始所定义的那个变量的值就没有了变量名来接收,此时这个变量值就会看做成是垃圾,python就会处理这个垃圾,释放10的内存占用,这就是python的垃圾回收机制
2.也就是说,当变量值的引用计数为0的时候,触发了垃圾回收制,释放一开始给他开辟的内存空间

4.小整数池

1.为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被垃圾回收机制回收。
2.在pycharm中运行python程序时,pycharm出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究。

原文地址:https://www.cnblogs.com/xichenHome/p/11265194.html

时间: 2024-08-29 18:19:42

014 Python变量的内存管理的相关文章

block没那么难(二):block和变量的内存管理

本系列博文总结自<Pro Multithreading and Memory Management for iOS and OS X with ARC> 了解了 block的实现,我们接着来聊聊 block 和变量的内存管理.本文将介绍可写变量.block的内存段.__block变量的内存段等内容,看完本文会对 block 和变量的内存管理有更加清晰的认识. 上篇文章举了个例子,在 block 内获取了一个外部的局部变量,可以读取,但无法进行写入的修改操作.在 C 语言中有三种类型的变量,可在

PHP笔记 变量和内存管理

鸟哥的博客是个大宝库,正在从头看起. <深入理解PHP内存管理之谁动了我的内存> http://www.laruence.com/2011/03/04/1894.html 1.memory_get_usage 函数 int memory_get_usage ([ bool $real_usage = false ] ) PHP脚本使用的内存(不含 memory_get_usage() 函数本身占用的内存) memory_get_usage()的参数$real_usage,默认为 FALSE:当

IOS开发—block对外部变量的内存管理

block对外部变量的内存管理 代码块在ios中通常用于回调,本文主要介绍block对外部变量的管理机制.我们知道如果要在block中使用block外面的变量,如果该变量是局部变量,就要先将其申明为__block类型.为什么呢?这就涉及到block对外部变量的内存管理. 一.基本数据类型 先看下面测试代码: //局部变量 - (void)localDataTest { int localData = 100; NSLog(@"localData --%p",&localData

python变量的内存机制

python变量的内存机制 作为一门简单易用的语言,且配备海量的库,python可谓是程序员手中的掌中宝,编程本身就是一种将人类思维转化为计算机思维的技术,如果不需要去追求极致的运行效率同时又不限制于计算机内存空间,python无疑是目前最方便的语言了. 作为一个合格的程序员,自然是要知其然并知其所以然,除了能够应用python来放飞自我之外,同时也要探究python其内部的运行原理,首当其冲的python编程中必须要用到的变量以及背后的运行机制. 注:以下示例在linux平台下编写,使用pyt

操作系统,编程语言分类,执行python两种方式,变量,内存管理,定义变量的三个特征

操作系统 1.什么是操作系统 操作系统位于计算机硬件与应用软件之间 是一个协调.管理.控制计算机硬件资源与软件资源的控制程序 2.为何要有操作系统? 1.控制硬件 2.把对硬件的复杂的操作封装成优美简单的接口(文件),给用户或者应用程序去使用 注意:一套完整的计算机系统包含三部分 应用程序:qq,暴风影音,快播 操作系统:windows,linux,unix 计算机硬件 强调: 我们以后开发的都是应用程序 应用程序无法直接操作硬件,但凡要操作硬件,都是调用操作系统的接口 编程语言分类 1.机器语

操作系统、编程语言分类、变量、内存管理、定义变量

1,什么是操作系统 操作系统就是软件与硬件之间的一个操作程序. 2.为什么要有操作系统 (1)控制硬件 (2)把控制硬件的接口做成一个完美的接口,供用户使用. 3.操作系统的三大组成 应用程序 : 操作系统  :比如windows, Linux 计算机硬件 4.编程语言的分类 (1)机械语言 (2)汇编语言 (3)高级语言:分为编译型C.解释型python 5.执行python的两种程序 <1>交互式 优点:调试程序 缺点:无法保存代码 <2>命令行的方式:永久保存代码  pyth

python-面试常用 --变量、内存管理(小整数池,引用计数)

执行Python程序的两种方法 第一种:交互式(jupyter就是对这种进行了封装) 优点:直接给出结果 缺点:无法保存 第二种:命令行式,通过Python解释器输入文本(pycharm对这种进行了封装) 优点:可以保存 缺点:无法及时得到报错反馈 命令行式可以识别任何文本文件,例如:.txt文件..py文件. 命令行式打开的三个步骤 编写Python文件 找到Python文件的路径,把文本从硬盘中读入内存 在内存运行并进行解释(这个时候才会有Python语法的概念,才会打印) 变量 什么是变量

Python中的内存管理机制

Python是如何进行内存管理的 python引用了一个内存池(memory pool)机制,即pymalloc机制,用于管理对小块内存的申请和释放 1.介绍 python和其他高级语言一样,会进行自动的内存管理.它使用引用计数机制检测为对象分配的内存是否可以被释放.然后,在Python中内存永远不会返还给操作系统,Python会持有这些内存并在需要时重新使用它们.在很多场景下,这个特性可以减少内存申请和释放所带来的性能损耗:但对于需要长时间运行的Python进程来讲,Python将会占用大量的

[Python之路] 内存管理&amp;垃圾回收

一.python源码 1.准备源码 下载Python源码:https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz 解压得到文件夹: 我们主要关注Include中的".h"文件以及Objects目录中的".c"文件. 我们从Include和Objects中的文件类型就可以看出Python解释器是C语言编写的. 2.object.h 在Include文件夹中,全部都是".h"文件. 这些C语言