From: james a. <ja...@dy...> - 2015-11-25 14:09:39
|
good afternoon; i am trying to determine why particular instances are retained. to this end i have tried to locate references, but although the instances are in the dynamic heap, no references are found. that is, in the transcript, below, the respective instance appears, but no reference is printed. (let ((count 0)) (sb-vm::map-allocated-objects #'(lambda (object code size) (declare (ignore code size)) (when (typep object 'transaction) (incf count) (format *trace-output* "~&***** ~a:~10T~a~%" count object) (sb-vm::map-referencing-objects #'print :dynamic object))) :dynamic) count) ***** 1: #<RDFCACHE-TRANSACTION NIL: NIL @NIL.RW [NIL @NIL] {100A24D5A3}> ***** 2: #<RDFCACHE-TRANSACTION 739b2f47-3e88-d743-b2a8-08dbfd008322: system/system @5fef8057-b5b1-b543-b316-56b4773b84ea.select.RO [#.(SB-SYS:INT-SAP #X00695FC0) @BEGUN] {100A324663}> ***** 3: #<RDFCACHE-TRANSACTION 2e5dbcd1-31e5-9545-8694-8226c04bc9cb: system/system @5fef8057-b5b1-b543-b316-56b4773b84ea.select.RO [NIL @NIL] {100A334553}> ;;; ... ***** 1003: #<RDFCACHE-TRANSACTION b6d66a9f-33fd-ab42-a041-3c369a31a208: system/system @5fef8057-b5b1-b543-b316-56b4773b84ea.select.RO [NIL @NIL] {100A37C043}> 1003 * (describe (find-class 'RDFCACHE-TRANSACTION)) #<STANDARD-CLASS RDFCACHE-TRANSACTION> [standard-object] Class precedence-list: RDFCACHE-TRANSACTION, TRANSACTION, STANDARD-OBJECT, SB-PCL::SLOT-OBJECT, T Direct superclasses: TRANSACTION Direct subclasses: RDFCACHE-MATRIX-TRANSACTION Direct slots: RECORD Type: CFFI-SYS:FOREIGN-POINTER Initform: (ERROR "record is required.") Readers: TRANSACTION-RECORD Writers: SETF-TRANSACTION-RECORD Documentation: Binds the rdfcache native transaction record wrapped by this instance. It is created during initialization and released explicitly by destroy-transaction, which is invoked when a query is de-registered. Slots with :INSTANCE allocation: %TYPE = (CLASS #<STANDARD-CLASS RDFCACHE-TRANSACTION>) SOURCE = #S(SB-C:DEFINITION-SOURCE-LOCATION.. PLIST = (SB-PCL::MI-INITARGS.. NAME = RDFCACHE-TRANSACTION CLASS-EQ-SPECIALIZER = #<SB-PCL::CLASS-EQ-SPECIALIZER {1003E5FD33}> DIRECT-SUPERCLASSES = (#<STANDARD-CLASS TRANSACTION>) DIRECT-SUBCLASSES = (#<STANDARD-CLASS RDFCACHE-MATRIX-TRANSACTION>) DIRECT-METHODS = ((#<STANDARD-METHOD.. %DOCUMENTATION = NIL SAFE-P = NIL FINALIZED-P = T %CLASS-PRECEDENCE-LIST = (#<STANDARD-CLASS RDFCACHE-TRANSACTION> #<STANDARD-CLASS TRANSACTION>.. CPL-AVAILABLE-P = T CAN-PRECEDE-LIST = (#<SB-PCL:SYSTEM-CLASS T> #<SB-PCL::SLOT-CLASS SB-PCL::SLOT-OBJECT>.. INCOMPATIBLE-SUPERCLASS-LIST = NIL WRAPPER = #<SB-KERNEL:LAYOUT for RDFCACHE-TRANSACTION {100A1D9673}> PROTOTYPE = #<RDFCACHE-TRANSACTION NIL: NIL @NIL.RW [NIL @NIL] {100A24D5A3}> DIRECT-SLOTS = (#<SB-MOP:STANDARD-DIRECT-SLOT-DEFINITION RECORD>) SLOTS = (#<SB-MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION URI>.. * (lisp-implementation-version) "1.2.6" * (lisp-implementation-type) "SBCL" i note the limited discussion on the topic - https://groups.google.com/forum/#!topic/sbcl-help-archive/J5ZH0yiUzHs - http://comp.lang.lisp.narkive.com/RFDyaPFX/sbcl-and-garbage-collection following snellman’s suggestion, i dave and restarted an image. in that case, just four instances remained. most of which i could account for as legitimately bound to known referencers. have there been any further insights into the behaviour? best regards, from berlin, --- james anderson | ja...@dy... | http://dydra.com |