# Any methods to let a custom function automatically run by GC after each garbage collection operation?

**URL:** <https://discourse.julialang.org/t/any-methods-to-let-a-custom-function-automatically-run-by-gc-after-each-garbage-collection-operation/30423>\
**Category:** General Usage\
**Tags:** question\
**Created:** [October 28, 2019, 11:27pm UTC](https://discourse.julialang.org/t/any-methods-to-let-a-custom-function-automatically-run-by-gc-after-each-garbage-collection-operation/30423 "2019-10-28T23:27:25Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![runapp](https://avatars.discourse-cdn.com/v4/letter/r/6f9a4e/32.png) [@runapp](https://discourse.julialang.org/u/runapp)\
**Post date:** [October 28, 2019, 11:27pm UTC](https://discourse.julialang.org/t/any-methods-to-let-a-custom-function-automatically-run-by-gc-after-each-garbage-collection-operation/30423/1 "2019-10-28T23:27:25Z")

</div>

I want to remove some WeakRef related resources, e.g.

```julia
struct Blah
    dummy::String
end
a = Blah("abc")
b = Dict()
b["a"] = WeakRef(a)

function do_cleaning()
    for (k, v) in b
        if v.value == nothing
            delete!(b, k)
        end
    end
end

a = nothing
GC.gc()
show(b) # b["a"]=>Blah()
do_cleaning() # Make this automatic after a GC round!
show(b) # empty

```

Is it possible?

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [October 28, 2019, 11:41pm UTC](https://discourse.julialang.org/t/any-methods-to-let-a-custom-function-automatically-run-by-gc-after-each-garbage-collection-operation/30423/2 "2019-10-28T23:41:04Z")

</div>

just make your own `.gc` function to do both

---

<div class="post-metadata">

**Author:** ![runapp](https://avatars.discourse-cdn.com/v4/letter/r/6f9a4e/32.png) [@runapp](https://discourse.julialang.org/u/runapp)\
**Post date:** [October 29, 2019, 12:50am UTC](https://discourse.julialang.org/t/any-methods-to-let-a-custom-function-automatically-run-by-gc-after-each-garbage-collection-operation/30423/4 "2019-10-29T00:50:50Z")

</div>

I mean I want it to run even after automatic gc operations run by RT/VM. -

---

<div class="post-metadata">

**Author:** ![jpsamaroo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jpsamaroo/32/46804_2.png) [@jpsamaroo](https://discourse.julialang.org/u/jpsamaroo)\
**Post date:** [November 2, 2019, 1:37pm UTC](https://discourse.julialang.org/t/any-methods-to-let-a-custom-function-automatically-run-by-gc-after-each-garbage-collection-operation/30423/5 "2019-11-02T13:37:18Z")

</div>

You probably want to use the API specified in this Julep (see `post_gc` callback): [https://github.com/JuliaLang/Juleps/blob/master/GcExtensions.md](https://github.com/JuliaLang/Juleps/blob/master/GcExtensions.md)

PR was merged into Julia here: [https://github.com/JuliaLang/julia/pull/28368](https://github.com/JuliaLang/julia/pull/28368)
