Могу ли я выполнить несколько экземпляров файла класса Java? - PullRequest
2 голосов
/ 12 мая 2009

Я имею в виду выполнение нескольких экземпляров одного и того же двоичного файла Java (приложение-сокет) с разными файлами конфигурации (в качестве параметра командной строки) Правильно ли обрабатывает JVM эту ситуацию? Другими словами, если у меня нет общих ресурсов (файлы, которые можно заблокировать и т. Д.), Будет ли такой подход создавать проблемы? Если да, то с какими вещами я должен быть осторожен.

Ответы [ 4 ]

10 голосов
/ 12 мая 2009

Если вы запускаете несколько экземпляров Java из командной строки, вы получаете несколько запущенных JVM (по одному на экземпляр).

Если нет общих ресурсов, у вас вообще не должно быть проблем.

1 голос
/ 12 мая 2009

Если у вас много экземпляров, то у вас могут быть проблемы с чрезмерным использованием памяти и медленным временем запуска. Большая часть JRE является общей, но не все и не в общем коде приложения и ресурсах. Некоторые JRE в некоторой степени исправляют это, например, последние версии IBM JRE 6 делят скомпилированный код приложения.

Если весь ваш код написан хорошо (например, нет изменяемых статических переменных (включая синглеты)), то использование отдельного процесса не должно быть проблемой.

1 голос
/ 12 мая 2009

Как уже указывал Мэтью, до тех пор, пока нет общих ресурсов, проблем не должно быть.

Чтобы добавить немного больше, JVM похож на контейнер, который обеспечивает среду выполнения для Java-программы и JVM, создаваемую каждый раз, когда мы вызываем Java из командной строки.

http://en.wikipedia.org/wiki/Java_Virtual_Machine

0 голосов
/ 12 мая 2009

Нет проблем с этим. На самом деле обратный случай немного раздражает - нет простого способа ограничить количество запускаемых экземпляров на одном компьютере.

...