Unsurprising if you've kept up with .net
The new primitive types (spans) allow direct low level manipulation of memory slices. A NIC driver, at it's core, really only copies data to and from shared buffers, so it gets a tremendous benefit from this new type.
C# recently getting new low level memory types definitely gave it the edge there, it does not reflect real world scenarios very accurately.
If you go down to bytecode engineering you can create some seriously fast JVM code. But I agree that making .net go fast seems easier than getting the JVM to go fast (if anything because many of the standard libraries are anything but fast, and you have to go hunting for high performance ones or roll your own).
C# recently getting new low level memory types definitely gave it the edge there, it does not reflect real world scenarios very accurately.