Seems like GoLint should emit an 'unused parameter' in this case.
-----Original Message-----
From: zct
Sent: Aug 21, 2019 10:50 AM
To: golang-nuts
Subject: Re: [go-nuts] A problem about runtime.SetFinalizer

I got it.Thank you for your help

在 2019年8月21日星期三 UTC+8下午11:00:26,Ian Lance Taylor写道:
On Wed, Aug 21, 2019 at 5:55 AM zct <tangzho...@bytedance.com> wrote:
>
> I recently had  a goroutine leak problem, the code i reduced is like this: https://play.golang.org/p/YW4hWoZZ7CD.
>
> The program is long-running and the finalizer is not called
>
> The RoomObj is deleted from map, why was it not released? Is it refereed by the asyncChan object?
>
>  I don't understand here, can somebody explain the reason

Your finalizer itself is keeping the value alive.

runtime.SetFinalizer(a, func(r *RoomTest) {
    fmt.Println("SetFinalizer")
    close(a.asyncChan.a)
})

You need to write the finalizer function to refer to r, not a.  The
reference to a in the finalizer function ensures that a is always
live.

Ian

--
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/906c3d64-9211-4206-a2ee-1a0d881a35b7%40googlegroups.com.




-- 
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/821137931.4341.1566404048080%40wamui-kitty.atl.sa.earthlink.net.

Reply via email to