CPython 的垃圾收集是否进行压缩?

2023-12-13

我正在与一位朋友交谈,比较语言,他提到 Java 的自动内存管理优于 Python,因为 Java 可以进行压缩,而 Python 则不能 - 因此对于长时间运行的服务器来说,Python 是一个糟糕的选择。

在不讨论哪个更好或更坏的情况下,他的说法是否正确——CPython 的垃圾收集器是否不压缩内存,因此,长时间运行的 Python 进程随着时间的推移会变得越来越碎片化?

我知道运行 CPython 的垃圾收集器是可选的。大多数情况下,它使用自动引用计数来进行自动内存管理,一旦引用计数为零,对象就会被释放 - 因此,就释放对象而言,CPython 的垃圾收集器唯一需要做的就是检测不存在的循环。根集中的对象有一个引用。但我不知道除此之外它是否还进行任何压缩的详细信息。

如果没有,那么长时间运行的 CPython 进程如何解决内存碎片问题?


我不确定,但 CPython 使用引用计数及其对象使用内存地址作为ids所以我想说它不进行压缩......并且根据this,“[C]Python 不使用内存压缩...[w]Python 应该使用内存压缩,实现 C 扩展会 会更加乏味且容易出错,而且这样的情况会更少 扩展 - 限制 Python 的使用范围。”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CPython 的垃圾收集是否进行压缩? 的相关文章

随机推荐

  • 在Python中提取列表元素

    这是我的第一个Python程序 我使用下面的代码来生成给定范围的组合 for k in range 0 items 1 for r in range 0 items 1 if r k gt 0 res x for x in itertool
  • 检查产品是否在愿望清单中

    我正在开发 Magento 主题 我需要构建一个函数来检查产品是否已添加到用户的愿望清单中 Magento 有一个 Mage Wishlist Helper Data 帮助程序类 但我不知道如何构建一个检查是否已在愿望清单中的函数 基本上我
  • OctoberCMS 如何重写用户插件的 onRegister() 函数?

    我在用着十月CMS基于 Laravel 我正在尝试覆盖用户插件 onRegister 功能 之前的答案帮助我扩展了插件 我想将用户名限制为字母数字alpha dash并限制为 50 个字符 原来的函数在帐户 php public funct
  • 这是 Javascript 中有效的 monad 转换器吗?

    为了更好地理解 monad 转换器 我实现了一个 由于 Javascript 是动态类型的 所以我不会模仿类型或数据构造函数 而是仅声明普通的旧 Javascript 对象 这些对象包含相应的静态函数以形成特定的 monad 转换器 基本思
  • PySpark reduceByKey 对多个值的影响

    如果我有一个 K V 对 如下所示 K v1 v2 K v3 v4 我怎样才能总结出我得到的值 k v1 v3 v2 v4 reduceByKey 支持函数 假设 A 是键值对的数组 output A reduceByKey lambda
  • ggplot2 - 饼图 - 以相反顺序的值标签

    我正在尝试使用 ggplot2 将标签与饼图匹配 Code values c 59 4 4 11 26 labels c catA catB catC catD catE pos cumsum values values 2 graph l
  • 使用 Flexjson 更改属性名称

    我使用 FlexJson 进行序列化 唯一的问题是它生成小写的字段名称 而我需要它们以大写开头 class Person String name public String getName return name 序列化时 该字段被序列化为
  • 如何拦截rails的模板渲染

    我有一个为多个网站提供服务的应用程序 与 Stack Exchange 类似 这几个站点的行为非常相似 给定以下视图目录结构 views shared users index html erb app1 users index html e
  • 不同电脑的渲染问题

    所以我正在制作一个塔防游戏 我与他们共享了一个构建 这样我就可以检查一切是否在另一台主机上正常运行 实际发生的情况是 虽然一切在我这边都完美渲染 在我的 mac xcode windows visual studio 2012 上 但在我朋
  • 如何按表中的“数字”位置选择列?

    我试图通过表中的 x 位置来选择列 DBI my example hookup gt prepare qq SELECT This That Condition I also want COLUMN 10 FROM tbl LIMIT co
  • 将数据传递到 Angular 4 中的自定义组件

    我有一个带有选择器的自定义组件 我如何以角度4将数据传递给它以在其模板中显示数据 喜欢
  • 如何按名称导入自定义Python包

    我创建了一个名为 custom module 的文件夹 并且该文件夹内有 init py 其中包含 all Submodule1 Submodule2 从我读到的文档中我应该能够调用import custom module并访问该包 但这并
  • FLAG_ACTIVITY_REORDER_TO_FRONT 和 startActivityForResult

    Activity A 使用 startActivityForResult 启动 B B 使用 startActivity 启动 C 之后的活动栈就是A B C 现在假设 C 使用 FLAG ACTIVITY REORDER TO FRONT
  • MongoDB - 全文索引 - 全文搜索 - 词干提取

    我注意到 如果我在某个集合的启用全文搜索的字符串字段中输入值 seasons 那么当我查询 season 时 MongoDB 会找到该值 但如果我输入更复杂的内容 例如 mice 或 criteria 当我分别查询 mouse 或 crit
  • 如何使用内容脚本有效地覆盖 CSS?

    我的问题是我想覆盖网站的样式 问题是 有一种方法可以做到这一点 使用 important句子 如所见这个例子 但是 我的文件中有数千条 CSS 指令 是否有更快速 有效的方法来执行此操作 即不放置 important在每一行上 我发现最简单
  • 如何使用 C#/WPF 在 MouseEnter 和 MouseLeave 事件上对 ListBox 项目进行动画处理?

    我无法通过列表项的 C 代码捕获 触发 OnMouseEnter 或 OnMouseLeave 事件 需要明确的是 我不需要 OnSelectedItem 事件 我想要做的是能够处理 ListBoxItem 的 OnMouseEnter 和
  • 如何将谷歌地图作为模板动态嵌入到另一个模板中

    谷歌地图通常显示为静态 html 但是我们需要在谷歌地图上动态显示数据 因此我们需要使用 javascript 将其作为模板嵌入到另一个模板中 它似乎是空白的 网页源代码显示调用了initialize 函数但地图没有出现 这是index h
  • 如何在iPhone SDK中将SQLite文件导出为CSV文件

    在我的应用程序中 我想将 SQLite 数据库文件导出到 CSV 文件 你能建议我如何做到这一点吗 谢谢 首先 您需要确保您正在使用FMDB访问数据库 因为在 Objective C 中直接使用 SQLite C API 的人都是受虐狂 你
  • WPF 用鼠标移动元素

    我正在尝试在 WPF 应用程序中用鼠标移动按钮 XAML Grid 是结构的根
  • CPython 的垃圾收集是否进行压缩?

    我正在与一位朋友交谈 比较语言 他提到 Java 的自动内存管理优于 Python 因为 Java 可以进行压缩 而 Python 则不能 因此对于长时间运行的服务器来说 Python 是一个糟糕的选择 在不讨论哪个更好或更坏的情况下 他的