The optimizations the JVM does in the newer ones are well understood optimizations but don't address the root issues with implementing generational GC in golang.
the issues was with the write barriers and requirements around moving data which can't be avoided in generational GC implementations because you have to move data and update pointers.
most of the benefits of generational GC doesn't exist in golang because of escape analysis allocating data on the stack.