[Python-Dev] Idea: reduce GC threshold in development mode (-X dev)

Serhiy Storchaka storchaka at gmail.com
Fri Jun 8 06:36:24 EDT 2018


08.06.18 11:31, Victor Stinner пише:
> Do you suggest to trigger a fake "GC collection" which would just
> visit all objects with a no-op visit callback? I like the idea!
>
> Yeah, that would help to detect objects in an inconsistent state and
> reuse the existing implemented visit methods of all types.
>
> Would you be interested to try to implement this new debug feature?

It is simple:

#ifdef Py_DEBUG
void
_PyGC_CheckConsistency(void)
{
     int i;
     if (_PyRuntime.gc.collecting) {
         return;
     }
     _PyRuntime.gc.collecting = 1;
     for (i = 0; i < NUM_GENERATIONS; ++i) {
         update_refs(GEN_HEAD(i));
     }
     for (i = 0; i < NUM_GENERATIONS; ++i) {
         subtract_refs(GEN_HEAD(i));
     }
     for (i = 0; i < NUM_GENERATIONS; ++i) {
         revive_garbage(GEN_HEAD(i));
     }
     _PyRuntime.gc.collecting = 0;
}
#endif



More information about the Python-Dev mailing list