Мое приложение промежуточного программного обеспечения позволяет запускать приложения и обмениваться данными. Мне приходится запускать много Java-приложений. (может быть, 180 настольных приложений на одном компьютере - приложения для пользовательского интерфейса и обработки данных.) Когда я запускаю приложения в разных jvm, у меня возникают проблемы с памятью JVM. Итак, я хочу попробовать запустить под одной и той же JVM или пользовательский интерфейс и приложения обработки данных, чтобы сгруппировать и запустить под одной и той же JVM. Является ли это возможным ?
Операционная система — CentOS7, а приложения — java 1.8.
теперь я заметил, что каждая jvm тратит впустую отдельную память, и я думаю, что если я смогу запустить ее в одной JVM, просто предположение
Вы можете настроить, сколько памяти выделяет каждая JVM. Если вы настолько близки к краю, что сама JVM вызывает проблемы, вам, вероятно, просто нужно больше ресурсов. 180 приложений одновременно?! Это действительно кажется очень экстремальным. Это довольно далеко от традиционных требований к ПК. Возможно, вам нужны настоящие виртуальные машины и серьезная инфраструктура.
180 приложений по 256 Мб каждое занимает всего 46 Гб ... конечно, дешевле просто найти мощный сервер с 64 Гб ОЗУ, чем пытаться перестроить 180 процессов, которые, очевидно, даже не могут общаться друг с другом по сети, чтобы их можно было разделить. на нескольких машинах
Самое верное решение — новая архитектура и переписывание приложений? Это тоже оплачивается отдельно. Я понимаю, что это обязательно, не так ли?
Нет, если ваши приложения уже не предназначены для сосуществования, например. будучи упакованным как нечто, что можно развернуть на общей платформе времени выполнения. В противном случае вам придется переписать все приложения, чтобы они могли сосуществовать (разрешить коллизии путей к классам, убедиться, что состояние static
не является проблемой, другое...) и иметь общую точку входа (например, один метод public static void main(String[])
для запуска всех из них) они не сможет работать на том же экземпляре JVM.
Лучше всего, вероятно, просмотреть потребление памяти отдельным экземпляром JVM и настроить параметры запуска, чтобы уменьшить его.
тогда логичнее расписать как вы оптимизируете эти java приложения?
Как вы думаете, почему у вас не будет проблем с памятью, если вы будете запускать все эти вещи в одной JVM?