You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[Goroutine 6 in state select, with github.com/patrickmn/go-cache.(*janitor).Run on top of the stack:
goroutine 6 [select]:
github.com/patrickmn/go-cache.(*janitor).Run(0xc0002f16d0, 0x0?)
/home/wxh/go/pkg/mod/github.com/patrickmn/go-cache@v2.1.0+incompatible/cache.go:1079 +0x85
created by github.com/patrickmn/go-cache.runJanitor
/home/wxh/go/pkg/mod/github.com/patrickmn/go-cache@v2.1.0+incompatible/cache.go:1099 +0xed
]
@vithnilica Can you explain how runtime.GC() is helping and when to call this function. I am really new to go and don't understand much about memory leaks and all so can you please give an example to explain it better.
It is not memory leaks (or goroutine leak). "go.uber.org/goleak" test does not wait for "garbage collector".
Can you please explain why I am getting the error(cause of the error) and how will adding a routine.GC() after every cache creation helps to resolve the error.
Activity
vithnilica commentedon Apr 3, 2023
it's work
ponder2000 commentedon May 17, 2023
I am also getting the similar kind of error as follows
@vithnilica Can you explain how
runtime.GC()is helping and when to call this function. I am really new to go and don't understand much about memory leaks and all so can you please give an example to explain it better.Thanks
vithnilica commentedon May 17, 2023
It is not memory leaks (or goroutine leak). "go.uber.org/goleak" test does not wait for "garbage collector".
ponder2000 commentedon May 17, 2023
Can you please explain why I am getting the error(cause of the error) and how will adding a
routine.GC()after every cache creation helps to resolve the error.vithnilica commentedon May 17, 2023
The test counts the number of goroutines at the beginning and at the end. You need to clean up the memory (garbage collection) before terminating the test. Golang typically does this with a delay. Before releasing an object from memory, the Golang calls a finalizer that terminates the goroutine.
Finalizer registration in code: https://github.com/patrickmn/go-cache/blob/master/cache.go#L1123
About finalizer: https://medium.com/a-journey-with-go/go-finalizers-786df8e17687
About garbage collection: https://tip.golang.org/doc/gc-guide