[Python-checkins] python/dist/src/Misc SpecialBuilds.txt,1.2,1.3
tim_one@users.sourceforge.net
tim_one@users.sourceforge.net
Tue, 09 Jul 2002 12:24:56 -0700
Update of /cvsroot/python/python/dist/src/Misc
In directory usw-pr-cvs1:/tmp/cvs-serv22922
Modified Files:
SpecialBuilds.txt
Log Message:
Moved COUNT_ALLOCS down and finished writing its description.
Index: SpecialBuilds.txt
===================================================================
RCS file: /cvsroot/python/python/dist/src/Misc/SpecialBuilds.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** SpecialBuilds.txt 9 Jul 2002 18:48:32 -0000 1.2
--- SpecialBuilds.txt 9 Jul 2002 19:24:54 -0000 1.3
***************
*** 54,63 ****
all still-live heap objects.
---------------------------------------------------------------------------
- COUNT_ALLOCS
-
- Special gimmicks:
-
- sys.getcounts()
- ---------------------------------------------------------------------------
PYMALLOC_DEBUG
--- 54,57 ----
***************
*** 75,77 ****
--- 69,116 ----
Py_DEBUG implies Py_REF_DEBUG, Py_TRACE_REFS, and PYMALLOC_DEBUG (if
WITH_PYMALLOC is enabled).
+ ---------------------------------------------------------------------------
+ COUNT_ALLOCS
+
+ Each type object grows three new members:
+
+ /* Number of times an object of this type was allocated. */
+ int tp_allocs;
+
+ /* Number of times an object of this type was deallocated. */
+ int tp_frees;
+
+ /* Highwater mark: the maximum value of tp_allocs - tp_frees so
+ * far; or, IOW, the largest number of objects of this type alive at
+ * the same time.
+ */
+ int tp_maxalloc;
+
+ Allocation and deallocation code keeps these counts up to date.
+ Py_Finalize() displays a summary of the info returned by sys.getcounts()
+ (see below), along with assorted other special allocation counts (like
+ the number of tuple allocations satisfied by a tuple free-list, the number
+ of 1-character strings allocated, etc).
+
+ Before Python 2.2, type objects were immortal, and the COUNT_ALLOCS
+ implementation relies on that. As of Python 2.2, heap-allocated type/
+ class objects can go away. COUNT_ALLOCS can blow up in 2.2 and 2.2.1
+ because of this; this was fixed in 2.2.2. Use of COUNT_ALLOCS makes
+ all heap-allocated type objects immortal, except for those for which no
+ object of that type is ever allocated.
+
+ Special gimmicks:
+
+ sys.getcounts()
+ Return a list of 4-tuples, one entry for each type object for which
+ at least one object of that type was allocated. Each tuple is of
+ the form:
+
+ (tp_name, tp_allocs, tp_frees, tp_maxalloc)
+
+ Each distinct type objects gets a distinct entry in this list, even
+ if two or more type objects have the same tp_name (in which case
+ there's no way to distinguish them by looking at this list). The
+ list is ordered by time of first object allocation: the type object
+ for which the first allocation of an object of that type occurred
+ most recently is at the front of the list.
---------------------------------------------------------------------------