当前位置: 首页 > 面试题库 >

Python垃圾回收

东方震博
2023-03-14
问题内容

我创建了一些python代码,该代码在一个循环中创建了一个对象,并且在每次迭代中均使用新的相同类型的对象覆盖了该对象。这完成了10.000次,Python每秒占用7mb的内存,直到使用了我的3gb
RAM。有谁知道从内存中删除对象的方法吗?


问题答案:

您没有提供足够的信息-这取决于您要创建的对象的详细信息以及您在循环中对该对象所做的其他操作。如果对象未创建循环引用,则应在下一次迭代时将其释放。例如,代码

for x in range(100000):
  obj = " " * 10000000

不会导致内存分配不断增加。



 类似资料:
  • 问题内容: 考虑以下脚本: 关键是,在所有这些步骤之后,此python进程在我的机器上的内存使用率约为30%(Python 2.6.5,是否可应要求提供更多详细信息?)。这是top输出的摘录: 分别 : 根据该文档为: 由于特定的实现,尤其是和,并非某些空闲列表中的所有项目都可能无法释放。 这是否意味着,如果我(暂时)需要大量的不同或数字,我需要这个导出到C / C ++,因为Python的GC没

  • 本文向大家介绍Python垃圾回收机制?相关面试题,主要包含被问及Python垃圾回收机制?时的应答技巧和注意事项,需要的朋友参考一下 引用计数 标记清除 分代回收  

  • 垃圾回收 我们对生产中花了很多时间来调整垃圾回收。垃圾回收的关注点与Java大致相似,尽管一些惯用的Scala代码比起惯用的Java代码会容易产生更多(短暂的)垃圾——函数式风格的副产品。Hotspot的分代垃圾收集通常使这不成问题,因为短暂的(short-lived)垃圾在大多情形下会被有效的释放掉。 在谈GC调优话题前,先看看这个Attila的报告,它阐述了我们在GC方面的一些经验。 Scal

  • 对于开发者来说,JavaScript 的内存管理是自动的、无形的。我们创建的原始值、对象、函数……这一切都会占用内存。 当我们不再需要某个东西时会发生什么?JavaScript 引擎如何发现它并清理它? 可达性(Reachability) JavaScript 中主要的内存管理概念是 可达性。 简而言之,“可达”值是那些以某种方式可访问或可用的值。它们一定是存储在内存中的。 这里列出固有的可达值的

  • 垃圾收集,引用计数,显式分配 和所有的现代语言一样,OCaml提供垃圾收集器,所以你不用像C/C++一样显式地分配和释放内存。 JWZ在他的文章 "Java sucks" rant(Java蛋疼(怒)!): 第一个好家伙是Java没有 free()。其他的都没有所谓了。这几乎掩盖了所有的缺点,不管有多糟糕, 这个有点让后续文档基本都没有意义了,但是...(译注:但是啥大家自己看吧) OCaml的垃

  • Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率。 1 引用计数 PyObject是每个对象必有的内容,其中ob_refcnt就是做为引用计数。当一个对象