Каждая Java-программа будет иметь свой собственный процесс. Код в памяти будет разделен (то есть двоичные файлы ВМ), но это не должно быть проблемой.
Вы должны действительно проверить, не умирают ли Java-приложения из-за проблем с памятью. В Linux, если вы спросите у ОС память, она скажет вам, что все в порядке, но на самом деле не зарезервирует ее. Когда вы действительно используете эту память, ОС фактически извлекает ее из системы в ваш процесс.
Может случиться так, что весь процесс запрашивает 2G, в общей сложности 40G памяти, а ОС просто позволяет это. Если процессы ведут себя одинаково и продолжают увеличиваться в объеме памяти, в какой-то момент они достигнут размера 200 М (я не обращаю внимания на другие процессы и все такое, только для упрощения чисел), а попытка использовать больше памяти убьет процесс с ошибкой сегментации.
Теперь я не ожидал, что это уничтожит все ваши приложения сразу, так как после того, как первое приложение будет убито, память будет восстановлена ОС, и она будет доступна для других процессов, и поэтому они будут умирать один по крайней мере 1 или 2 должны быть живы в конце. В некоторых редких случаях может случиться так, что хотя первый процесс все еще очищается после (сбрасывается ядро и все остальное, что связано с ОС ...), остальные процессы сталкиваются с одной и той же проблемой, и все они умирают раньше память из первого действительно доступна ... но я бы не рассчитывал на это как на событие с высокой вероятностью.