[Zope-Checkins] CVS: ZODB/src/persistent - cPersistence.h:1.28

Jeremy Hylton jeremy at zope.com
Fri Feb 13 23:28:14 EST 2004


Update of /cvs-repository/ZODB/src/persistent
In directory cvs.zope.org:/tmp/cvs-serv9859

Modified Files:
	cPersistence.h 
Log Message:
Add a comment about space used by persistent objects.


=== ZODB/src/persistent/cPersistence.h 1.27 => 1.28 ===
--- ZODB/src/persistent/cPersistence.h:1.27	Fri Nov 28 11:44:55 2003
+++ ZODB/src/persistent/cPersistence.h	Fri Feb 13 23:28:13 2004
@@ -27,6 +27,28 @@
 
 typedef struct ccobject_head_struct PerCache;
 
+/* How big is a persistent object?
+
+   12  PyGC_Head is two pointers and an int
+    8  PyObject_HEAD is an int and a pointer
+ 
+   12  jar, oid, cache pointers
+    8  ring struct
+    8  serialno
+    4  state + extra
+
+  (52) so far
+
+    4  dict ptr
+    4  weaklist ptr
+  -------------------------
+   64  only need 62, but obmalloc rounds up to multiple of eight
+
+  Even a ghost requires 64 bytes.  It's possible to make a persistent
+  instance with slots and no dict, which changes the storage needed.
+
+*/
+
 #define cPersistent_HEAD \
     PyObject_HEAD \
     PyObject *jar; \




More information about the Zope-Checkins mailing list