Considering the amount of man-hours that have gone into both, the exact reasons are probably hidden under a whole bunch of implementation details.
That being said, I've run benchmarks where the JVM (version 1.8) outperforms C++ and Fortran... The JVM seemingly optimizes everything, and the amount of fine tuning you can do is amazing.
I've never heard of the CLR coming close to Java performance on large-ish apps or tasks, all else being equal.