Да, это абсолютно верно даже для новых версий Linux (мы находимся на 64-битной Red Hat 5.2). У меня была проблема с медленно работающими подпроцессами в течение приблизительно 18 месяцев, и я никогда не мог выяснить проблему, пока я не прочитал ваш вопрос и не выполнил тест для проверки.
У нас есть 32 ГБ блок с 16 ядрами, и если мы запустим JVM с параметрами, такими как -Xms4g и -Xmx8g, и запустим подпроцессы, используя Runtime.exec () с 16 потоками, мы не сможем ускорить наш процесс чем около 20 технологических вызовов в секунду.
Попробуйте это с простой командой date в Linux около 10000 раз. Если вы добавляете код профилирования для наблюдения за происходящим, он быстро запускается, но со временем замедляется.
После прочтения вашего вопроса я решил попробовать снизить настройки памяти до -Xms128m и -Xmx128m. Теперь наш процесс выполняется со скоростью около 80 вызовов в секунду. Настройки памяти JVM - все, что я изменил.
Кажется, это не высасывает память таким образом, что у меня когда-либо кончается память, даже когда я пробовал это с 32 потоками. Просто дополнительная память должна быть каким-то образом выделена, что приводит к значительным затратам на запуск (и, возможно, отключение).
В любом случае, похоже, что должна быть настройка для отключения этого поведения в Linux или, возможно, даже в JVM.