A generational GC might help with some part of the problem but does not solve it entirely.
Major collection still happen which will scan everything, just with a reduced frequency.
Long libed caches might still have pointers being mutated frequently (like an LRU cache), which will put objects in younger generation.
Golang does not have a generational GC. There are examples where long lived caches have been a problem in golang. One example - https://discord.com/blog/why-discord-is-switching-from-go-to...