Python GC内存压缩

问题描述 投票:0回答:1

据我所知cpython 具有GC,但不支持内存压缩,这意味着长时间运行的python进程可能遭受高内存碎片/消耗。

我已经阅读了有关该主题的几个主题:

https://lists.gt.net/python/python/1163027#1163027

https://lists.gt.net/python/python/1162114

https://dzone.com/articles/python-memory-issues-tips-and-tricks

如果我正确理解了前两个线程,那么问题就出在Python中的C内存分配器如何工作。

如果Java热点也用C编写,怎么可能会成为问题?我想念什么?

为什么cpython GC不支持内存压缩,据我所知,没有计划引入它?

python memory garbage-collection cpython
1个回答
0
投票

问题不是CPython的内存分配器,而是CPython的C API。 Java的本机接口(JNI)经过精心设计,可将用户与虚拟机实现细节(例如垃圾收集)隔离开。相比之下,CPython的C API公开了其更多实现,包括内存布局和引用计数。引用计数已写入所有已编写的C扩展中。可以在具有不同GC设计的VM上仿真CPython API(PyPy的cpyext支持可以做到这一点),但是这种仿真并不完美,并且会增加开销。

© www.soinside.com 2019 - 2024. All rights reserved.