[Openmcl-devel] Calling a function when memory is garbage collected.

Grégory Vanuxem g.vanuxem at gmail.com
Thu Feb 1 11:40:18 PST 2024


Hello,

My question is in object, when the garbage collector releases memory
from a variable for example does Clozure CL allow the user to add a
"hook" function to do some other things? Namely I also need to release
memory in another place not known to the garbage collector. Here is a
piece of code for
other CL implementations:

(defun make_jlref (val type)
     (let* ((ret (make-instance 'jlref :val val :type type))
            (hash (write-to-string (sxhash ret) :base 16)))
        #+:lispworks (flag-special-free-action hash)
        #+:cmu (ext:finalize ret (lambda () (free_jlref hash)))
        #+:sbcl (sb-ext:finalize ret (lambda () (free_jlref hash)))
        #+:allegro (excl:schedule-finalization ret (lambda ()
(free_jlref hash)))
        (setf (jlrefId ret) hash)
        ret))

Regards,
- Greg


More information about the Openmcl-devel mailing list