Like Core.Weak_hashtbl, but automatically collects keys with unused data, rather
than requiring user code to call remove_keys_with_unused_data
.
key_is_using_space t key
returns true
if key
is using some space in t
. mem t
key
implies key_is_using_space t key
, but it is also possible that that
key_is_using_space t key && not (mem t key)
.
reclaim_space_for_keys_with_unused_data t
reclaims space for all keys in t
whose
data has been detected (by a finalizer) to be unused. Only key
s such that
key_is_using_space t key && not (mem t key)
will be reclaimed.
set_run_when_unused_data t ~thread_safe_f
calls thread_safe_f
in the finalizer
attached to each data
in t
, after ensuring the entry being finalized will be
handled in the next call to reclaim_space_for_keys_with_unused_data
. This can be
used to arrange to call reclaim_space_for_keys_with_unused_data
at a convenient time
in the future. thread_safe_f
must be thread safe -- it is *not* safe for it to call
any Weak_hashtbl
functions.