Earlier quoted context omitted.
If you're mmaping a file and processing the majority of it, you really are typically doing that in C today if you care about performance. You can get acceptable performance in Java with ByteBuffers, but because of the lack of value types it doesn't feel like Java any more. Go should be able to get much closer to C's performance, while still being closer to idiomatic Go code. And Go can plug in small pieces of C code…
People use mmapped files all the time in performance critical Java. Typically using the unsafe packages. In fact, if you want to communicate with C/assembler level things, this is the way people who do fast Java do it because JNI is very slow. If you want to use an abstraction around ByteBuffers that feels like value types take a look at the javalution structs. As a counter to your argument, C# has had value types fo…
Then again, depending on your needs, being able to scale out or up is far more important than raw performance characteristics... just depends on your needs.