Calling a function when memory is garbage collected.
Grégory Vanuxem <[email protected]> Thu, 1 Feb 2024 20:40:18 +0100
| Newsgroups | gmane.lisp.openmcl.devel |
|---|---|
| Message-ID | <CAHnU2dZpueM9kb8Y=gZhbkr+X6UxSkuB0eeOHo9A3mtGiCnetg@mail.gmail.com> |
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