bpo-38379: Don't block collection of unreachable objects when some objects resurrect by pablogsal · Pull Request #16687 · python/cpython

tim-one

tim-one

tim-one

tim-one

tim-one

tim-one

tim-one

tim-one

tim-one

tim-one

tim-one

tim-one

@pablogsal

@pablogsal

tim-one

@pablogsal

jacobneiltaylor pushed a commit to jacobneiltaylor/cpython that referenced this pull request

Dec 5, 2019
…jects resurrect (pythonGH-16687)

Currently if any finalizer invoked during garbage collection resurrects any object, the gc gives up and aborts the collection. Although finalizers are assured to only run once per object, this behaviour of the gc can lead to an ever-increasing memory situation if new resurrecting objects are allocated in every new gc collection.

To avoid this, recompute what objects among the unreachable set need to be resurrected and what objects can be safely collected. In this way, resurrecting objects will not block the collection of other objects in the unreachable set.

shihai1991 pushed a commit to shihai1991/cpython that referenced this pull request

Jan 31, 2020
…jects resurrect (pythonGH-16687)

Currently if any finalizer invoked during garbage collection resurrects any object, the gc gives up and aborts the collection. Although finalizers are assured to only run once per object, this behaviour of the gc can lead to an ever-increasing memory situation if new resurrecting objects are allocated in every new gc collection.

To avoid this, recompute what objects among the unreachable set need to be resurrected and what objects can be safely collected. In this way, resurrecting objects will not block the collection of other objects in the unreachable set.

oraluben pushed a commit to oraluben/cpython that referenced this pull request

Mar 5, 2024
…jects resurrect (pythonGH-16687)

Currently if any finalizer invoked during garbage collection resurrects any object, the gc gives up and aborts the collection. Although finalizers are assured to only run once per object, this behaviour of the gc can lead to an ever-increasing memory situation if new resurrecting objects are allocated in every new gc collection.

To avoid this, recompute what objects among the unreachable set need to be resurrected and what objects can be safely collected. In this way, resurrecting objects will not block the collection of other objects in the unreachable set.