As shown in the following code: cyclic structure with finalizer <https://go.dev/play/p/Fn_h08y-L6b>
The s1 & s2 didn't been free, and finalizer didn't run. But when enable the line which have been commented, all run as expected(s1 & s2 been free)。 I have seen the comment in runtime.SetFinalizer: If a cyclic structure includes a block with a finalizer, that cycle is not guaranteed to be garbage collected and the finalizer is not guaranteed to run, because there is no ordering that respects the dependencies. But why it haven't been free in first code? -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/bdb5a7dc-e68b-417c-80d8-3fabb9013dc9n%40googlegroups.com.