Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么cpython在引发MemoryError之前不调用gc.collect()?_Python_Garbage Collection_Allocation_Cpython - Fatal编程技术网

为什么cpython在引发MemoryError之前不调用gc.collect()?

为什么cpython在引发MemoryError之前不调用gc.collect()?,python,garbage-collection,allocation,cpython,Python,Garbage Collection,Allocation,Cpython,我注意到,即使在几乎一半的系统内存被标记为gc,但标记对象的数量低于gc阈值的情况下,cpython也会引发MemoryError。在这些情况下,手动调用gc.collect()并重试引发原始MemoryError的操作会成功,并且在此过程中会回收大量RAM 是否有理由cpython在引发MemoryError之前不尝试gc.collect()?这样做有缺点吗?CPython使用分代垃圾收集和引用计数器。我希望我能有时间仔细阅读所有细节,为这一机制如何运作给出答案,但这些是我拥有的资源:和。不过

我注意到,即使在几乎一半的系统内存被标记为gc,但标记对象的数量低于gc阈值的情况下,cpython也会引发MemoryError。在这些情况下,手动调用gc.collect()并重试引发原始MemoryError的操作会成功,并且在此过程中会回收大量RAM


是否有理由cpython在引发MemoryError之前不尝试gc.collect()?这样做有缺点吗?

CPython使用分代垃圾收集和引用计数器。我希望我能有时间仔细阅读所有细节,为这一机制如何运作给出答案,但这些是我拥有的资源:和。不过,对于某些对象,GC将无法对其进行垃圾收集。CPython使用分代垃圾收集和引用计数器。我希望我能有时间仔细阅读所有细节,为这一机制如何运作给出答案,但这些是我拥有的资源:和。不过,对于某些对象,GC将无法对其进行垃圾收集。