Как запустить два или более приложений в одном jvm

Мое приложение промежуточного программного обеспечения позволяет запускать приложения и обмениваться данными. Мне приходится запускать много Java-приложений. (может быть, 180 настольных приложений на одном компьютере - приложения для пользовательского интерфейса и обработки данных.) Когда я запускаю приложения в разных jvm, у меня возникают проблемы с памятью JVM. Итак, я хочу попробовать запустить под одной и той же JVM или пользовательский интерфейс и приложения обработки данных, чтобы сгруппировать и запустить под одной и той же JVM. Является ли это возможным ?

Операционная система — CentOS7, а приложения — java 1.8.

Как вы думаете, почему у вас не будет проблем с памятью, если вы будете запускать все эти вещи в одной JVM?

Strelok 21.05.2019 13:42

теперь я заметил, что каждая jvm тратит впустую отдельную память, и я думаю, что если я смогу запустить ее в одной JVM, просто предположение

dincer.unal 21.05.2019 13:53

Вы можете настроить, сколько памяти выделяет каждая JVM. Если вы настолько близки к краю, что сама JVM вызывает проблемы, вам, вероятно, просто нужно больше ресурсов. 180 приложений одновременно?! Это действительно кажется очень экстремальным. Это довольно далеко от традиционных требований к ПК. Возможно, вам нужны настоящие виртуальные машины и серьезная инфраструктура.

Terry 21.05.2019 14:00

180 приложений по 256 Мб каждое занимает всего 46 Гб ... конечно, дешевле просто найти мощный сервер с 64 Гб ОЗУ, чем пытаться перестроить 180 процессов, которые, очевидно, даже не могут общаться друг с другом по сети, чтобы их можно было разделить. на нескольких машинах

Strelok 21.05.2019 14:03

Самое верное решение — новая архитектура и переписывание приложений? Это тоже оплачивается отдельно. Я понимаю, что это обязательно, не так ли?

dincer.unal 21.05.2019 14:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
310
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет, если ваши приложения уже не предназначены для сосуществования, например. будучи упакованным как нечто, что можно развернуть на общей платформе времени выполнения. В противном случае вам придется переписать все приложения, чтобы они могли сосуществовать (разрешить коллизии путей к классам, убедиться, что состояние static не является проблемой, другое...) и иметь общую точку входа (например, один метод public static void main(String[]) для запуска всех из них) они не сможет работать на том же экземпляре JVM.

Лучше всего, вероятно, просмотреть потребление памяти отдельным экземпляром JVM и настроить параметры запуска, чтобы уменьшить его.

тогда логичнее расписать как вы оптимизируете эти java приложения?

dincer.unal 21.05.2019 14:01

Другие вопросы по теме