我和一位朋友交谈,比较语言,他提到Java的自动化内存管理优于Python的Java的DO压缩,而Python并不如此,因此对于长期运行的服务器来说,Python是一个糟糕的选择。
没有进入哪个更好或更坏,他的说法是真的吗?CPPython的垃圾收集器不是紧凑的内存,因此,长时间运行的Python进程随着时间的推移变得越来越碎片化?
我知道运行cpython的垃圾收集器是可选的。大多数情况下,它使用自动引用计数来进行自动内存管理,一旦引用计数命中为零,对象就被释放了。因此,在释放对象方面,CPython的垃圾回收器只需要检测根集中没有对象引用的循环。但我不知道它是否还进行了压实。
如果没有,那么长时间运行的CPython进程如何解决内存碎片问题呢?
最佳答案
我不确定,但是cPython使用reference counting,它的对象使用内存地址作为“AA>”,所以我会说它不做压缩…根据ids,[C] Python不使用内存压缩…[U] Python使用内存压缩,实现C扩展
更乏味,更容易出错
扩展-限制使用python的域。”