Процесс может быть (и обычно) связан с «управляющим терминалом». Этот терминал может быть аппаратным в конце последовательной линии или, что гораздо более вероятно, сегодня виртуальным программным эквивалентом. TTY наследуется от родительского процесса. Скорее всего, ваша IDE отсоединяется от своего TTY, и при запуске вне вашей Java-программы наследует TTY вашей оболочки.

я запускаю PS, один из столбцов выводится TTY. Что это значит? В частности, как определяется значение «??» сравнить с "ttys000"?

Я спрашиваю, потому что у меня исполняется Java-программаsort через ProcessBuilder, и когда эта программа запускается через мою IDE (IntelliJ), процесс занимает в 5 раз меньше, чем при запуске в качестве исполняемого файла JAR за пределами IDE.

В каждом случае я запускаю ps, когда выполняется сортировка, и единственное отличие заключается в том, что IDE создает процесс с TTY, равным ?? тогда как фляга создает процесс с TTY ttys000.