mirror of
https://github.com/python/cpython.git
synced 2025-11-02 03:01:58 +00:00
Py_Main(): When compiled by Insure (i.e. __INSURE__ is defined), call
the internal API function to release the interned strings as the very last thing before returning status. This aids in memory use debugging because it eliminates a huge source of noise from the reports. This is never called during normal (non-debugging) use because releasing the interned strings slows Python's shutdown and isn't necessary anyway because the system will always reclaim the memory.
This commit is contained in:
parent
a903ad9855
commit
3e13b1e48b
1 changed files with 14 additions and 0 deletions
|
|
@ -301,6 +301,20 @@ Py_Main(int argc, char **argv)
|
|||
sts = PyRun_AnyFile(stdin, "<stdin>") != 0;
|
||||
|
||||
Py_Finalize();
|
||||
|
||||
#ifdef __INSURE__
|
||||
/* Insure++ is a memory analysis tool that aids in discovering
|
||||
* memory leaks and other memory problems. On Python exit, the
|
||||
* interned string dictionary is flagged as being in use at exit
|
||||
* (which it is). Under normal circumstances, this is fine because
|
||||
* the memory will be automatically reclaimed by the system. Under
|
||||
* memory debugging, it's a huge source of useless noise, so we
|
||||
* trade off slower shutdown for less distraction in the memory
|
||||
* reports. -baw
|
||||
*/
|
||||
_Py_ReleaseInternedStrings();
|
||||
#endif /* __INSURE__ */
|
||||
|
||||
return sts;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue