Моя первоначальная мысль - не аспект управления / мониторинга, а использование диспетчера Java для запуска 2000 различных процессов на одном компьютере. Сколько памяти они потребляют? Они работают одновременно? Если они разные реализации, может ли машина использовать общие библиотеки и т. Д. Для сокращения потребления памяти.
Затем Java-процесс должен прочитать / обработать процесс stdout / stderr (обычно вы делаете это в потоке на поток, чтобы предотвратить блокировку - если у вас есть 2000 процессов, использующих этот механизм, вы просматриваете 4000 потоков).
Итак, я бы сначала подумал об архитектуре этого и распределении его по нескольким машинам и виртуальным машинам, прежде чем рассматривать управляемость.
Чтобы получить ваш процессор / память и т. Д., Я бы посмотрел на JMX и предоставленные компоненты. JMX предоставляет средства для предоставления этих данных через RMI и т. Д. Но для получения этой информации по подпроцессам (контейнер на вашем языке) потребуется информация, специфичная для ОС. На какой ОС вы работаете? Для Windows проверьте WMI . В Unix / Linux вам могут помочь различные узлы /proc
файловой системы.