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

为什么python为什么同时为gc使用引用计数和标记和清除?

甄志
2023-03-14
问题内容

我的问题是为什么python为什么同时使用引用计数和gc的标记和清除?为什么不只是标记和扫描?

我最初的猜测是,使用引用计数可以轻松删除非循环引用的对象,这可能会在某种程度上加快标记扫掠并立即获得内存。不知道我的猜测是否正确?

有什么想法吗?

非常感谢。


问题答案:

Python(语言)没有说明它使用哪种形式的垃圾收集。您描述的主要实现(通常称为CPython)。其他版本,例如Jython或IronPython,则使用纯垃圾收集系统

是的,使用引用计数进行早期收集是有好处的,但是CPython使用它的主要原因是历史性的。最初,没有针对循环对象的垃圾回收,因此循环导致内存泄漏。C
API和数据结构很大程度上基于引用计数的原理。添加真正的垃圾收集时,不能选择破坏现有的二进制API和所有依赖于它们的库,因此必须保留引用计数。



 类似资料:
  • 问题内容: 在多个开源项目中,我看到人们确实在获取当前文件的绝对路径。 但是,我发现并产生相同的结果。似乎有点多余。 人们使用它是有原因的吗? 问题答案: 在支持它们的操作系统上取消引用符号链接。 只需从路径中删除类似和的东西,即可提供从目录树的根到命名文件(或符号链接)的完整路径 例如,在Ubuntu上 符号链接可以包含相对路径,因此需要同时使用两者。内部调用可能会返回包含嵌入式部件的路径,然后

  • 本文向大家介绍GC是什么? 为什么要有GC?相关面试题,主要包含被问及GC是什么? 为什么要有GC?时的应答技巧和注意事项,需要的朋友参考一下 答 GC(Garbage Collection) GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一: 当程序需要更多的堆空间时,GC需要进行垃圾清理工作,暂停所有线程,找出所有无被引用的对象,进

  • 问题内容: 有谁知道为什么下面不等于0? 要么: 当我将其输入python时,它的值为1.22e-16。 问题答案: 该数字不能完全表示为浮点数。所以,不给你,它给你。 而其实类似。 那么,您如何处理呢? 您必须计算出或至少猜测出适当的绝对和/或相对误差范围,然后编写而不是: (这也意味着你要组织你的计算,使相对误差相对较大,而不是在你的情况,因为是恒定的,这是微不足道的,只是做了落后的。) Nu

  • 为什么? 何时应该在项目中使用? 我知道这是为了将所有数据库更改保持在一个地方,但类似的做法也可以通过在某个存储库系统中创建一个简单的文件并随时间不断更新来实现。

  • 问题内容: 考虑以下测试用例,其中一个float元素和一个inline元素放置在a 与a之内: 呈现时,字段集的高度为200像素(它们清除浮点数了吗?),而div的高度仅与内联元素一样高。造成这种现象的原因是什么,是否有一种解决方法可以使这些字段集像div一样起作用? 问题答案: 显然,元素应该为其内容生成块格式上下文: 期望该元素建立新的块格式化上下文。 这就是为什么浮动元素不会从其中浮动出来的

  • 问题内容: 结合使用HTTP开发客户端和发布请求和Content-Type应用程序/ x-www-form-urlencoded 1)仅@RequestBody 请求-本地主机:8080 / SpringMVC /欢迎进入正文-name = abc Code //如预期的那样将正文命名为“ name = abc” 2)仅@RequestParam 请求-本地主机:8080 / SpringMVC