Простой ответ - нет. Все GC, используемые Hotspot и другими JVM (например, Zing из Azul , на котором я работаю) по своей сути недетерминированы. Вы, безусловно, можете настроить GC для достижения вашей цели задержки в большинстве случаев, и использование Zing даст вам гораздо более надежные результаты, потому что он выполняет сжатие коллекции по-настоящему параллельно с потоками приложения (поэтому, поэтому не имеет остановки мировые паузы).
Проблема в том, что, если ваше приложение внезапно достигнет точки, в которой оно начнет распределять объекты с гораздо более высокой скоростью или генерирует мусор намного быстрее, чем вы настроили, вы начнете видеть паузы, которые превышают вашу цель. Это просто способ работы GC.
Единственный способ получить истинное детерминированное поведение, которое вы ищете, это использовать JVM реального времени (посмотрите RTSJ spec ), который также потребует операционная система в реальном времени. Недостатком этого является частая пропускная способность.