Для меня проблемы с GC и многопоточностью очень реальны. Я не говорю, что JVM плохая, просто проблема сама по себе очень сложна.
В одном из наших проектов у нас было два приложения, работающие в одной JVM (сервер приложений). Подчеркивая их по отдельности, это было хорошо, но когда оба были стрессом вместе, производительность снижалась странным образом. Мы наконец-то разделили приложения. в двух JVM производительность вернулась к норме (конечно, медленнее, чем при использовании только одного приложения, но разумно).
Настройка ГХ чрезвычайно сложна. Вещи могут улучшиться в течение 5 минут, а затем основная коллекция будет заблокирована и т. Д. Вы можете решить, хотите ли вы высокую производительность или низкую задержку в операциях. Высокая пропускная способность хороша для пакетной обработки, низкая задержка необходима для интерактивного приложения. В конечном счете, параметры JVM по умолчанию были для нас теми, которые дают лучшие результаты!
Это не совсем ответ, скорее возвращение опыта, но да, для меня GC и многопоточность может быть проблемой.