Java will use however much memory is assigned to it, since it defaults to throughput performance (though now with G1 and Shenandoah that can also be tuned)[1].
Compilation times are not that different, especially when using incremental compilation. I worked on large projects in both languages, and for any non-trivial code base, the difference isn't that far off.
I'd argue that readability is better in Java due to things like non-clutter due to error handling, and the existence of generics.
Deployment has been solved for a while now with building shadow jars[1].
Large projects are complex. The JVM is designed to be a platform for developing general purpose software, which is why it provides options for tuning and whatnot. golang only comes with a low latency GC, which basically means you cannot use golang if you're looking for high throughput.
So you "only" have to make significant, error prone (by using unsafe) code changes as opposed to tuning a couple of parameters for the GC to account for a different workload? Again, this shows the superiority of the JVM here.
And the same approaches can be done in Java (e.g. self-managed off heap allocations), even more-so when they introduce value types.
Object pools are really easy.
Unsafe is only for extreme cases. Some cache libraries use it. You don't have to code it yourself.
Yes this is better than relying on the end user/admin to tune things. It is more predictable.