For me, the problems with GC and multithreading are very real. I'm not saying that the JVM is bad, just the problem is that the problem itself is very complex.
In one of our projects, we had two applications running on the same JVM (application server). When they emphasized them individually, it was wonderful, but when both were tense, productivity worsened in a strange way. Finally, we split up the applications. in two JVMs, and the performance returned to normal (of course, slower than when only one application was used, but reasonably).
GC configuration is very complicated. Things can improve within 5 minutes, and then the main collection will be blocked, etc. You can decide whether you want high bandwidth or low latency in operations. High throughput is suitable for batch processing; interactive applications require low latency. Ultimately, the default parameters for the JVM were the best results for us!
This is actually not an answer, rather a return to experience, but yes, for me there may be a problem with GC and multithreading.
source share