edit: I am a Java guy myself, and would like to do some amateur gamedev in that direction (online FPS), but im worried about above mentioned point.
There are plenty of production games that can live with < 10ms pauses.
I'm also not sure about the new c# -> to native compilers coming out.
For example GC.TryStartNoGCRegion
Or using array segments
Unity has made a lot to spread C# love among game devs, but it also gave a bad reputation to those unaware how .NET really is.
Not really. If you look to the future, I'd recommend Rust for making game engines. They by nature should be latency sensitive, and any kind of non deterministic behavior caused by garbage collector is really unacceptable.
Rust is a nice language, but Unity already uses C++ outside of the user-facing scripting layer.
Not everywhere. Phones, tablets and older or low end laptops are very popular.
In every other case, you're better off using a language whose resource management model doesn't fight you.
Swift is the best of both worlds in this regard.
Besides, it is not guaranteed that you'll succeed with a manual strategy for dealing with garbage. Naive strategies have a really low throughput. They may not stop the world, but will be slow.
Apparently we need to go through this cycle every few decades.