Python和C++的内存管理机制

1 Python内存管理机制

Python内存管理机制主要是以下三个方面:

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

引用计数
对于Python的每一个对象,Python都采用了类似Windows内核对象一样的方式对内存进行管理,来维护该对象的引用的计数。
对于以下的例子:

a=1

我们将a称为对象1的引用,引用a指向对象1,这时对象1的引用计数为1我们可以看再看下面的例子深入理解引用:
图1
可以看出a,b都是1的引用,他们的地址相同,也就是1个对象,两个引用都指向1,这时其引用计数是2,下面我们来修改a的值,观察有什么变化:
图2
a的值变为2,b的值变为1,且b的地址为原先的地址,a的地址为一个新的地址,而对象1的引用计数为1,对象2的引用计数也为1,而当引用计数变为0的时候就会被回收掉
引用计数增加的情况:

  • 对象被创建:x=1
  • 用对象的引用创建了其他引用:y=x
  • 被作为参数传递给函数:foo(x)
  • 作为容器对象的一个元素:a=[1,x,’33]

引用计数减少的情况:

  • 对象的别名被显式的销毁:del x
  • 对象的别名被赋值给其他对象:如上面的a=2,使得1的引用计数减1
  • 一个本地引用离开了它的作用域,如foo(x)函数结束时,x指向的对象引用计数减1
  • 对象从一个窗口对象中被删除:myList.remove(x)
  • 窗口对象本身被销毁:del myList,或者窗口对象本身离开了作用域

垃圾回收机制

  • 引用计数:循环引用时,会导致相互引用,每个对象的引用计数都不为0,因此对象占用的内存永远不会被释放,于是引入“标记-清除”,“分代回收”两种收集技术
  • 标记清除:见下面链接
  • 分代回收:见下面链接

内存池机制

关于垃圾回收机制详细介绍请看这里:python内存管理机制
关于内存池机制详细介绍请看这里:python内存管理机制

2 C++内存管理机制

这里C++内存管理主要从3个方面来介绍内存管理机制:

  • 内存管理

    • 内存管理详解
    • C++的健壮指针和资源管理
  • 内存泄漏

    • C++中动态内存分配引发问题的解决方案
    • 如何对付内存泄漏?
    • 浅谈C/C++内存泄漏及其检测工具
  • 内存回收

    • C++内存对象大作战
    • 浅议C++中的垃圾回收方法

还有一个博客,这里附上链接:

注:这里主要是附上了一些优秀博客的链接,进行简要的整理

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值