tl;dr: The Go implementation being faster has nothing to do with Java or Go. The version implemented in Go used a slightly different algorithm, which allowed hot inner loops to terminate early, greatly improving the performance of the algorithm.
Also, try running multiple java processes on a machine as opposed to multiple go programs.
No GC I know is happy without a heap several times larger than the program's requirements.
OTOH, Java programs tend to be built using frameworks that soak up memory like crazy. So there's that.