Экземпляры JVM - PullRequest
       3

Экземпляры JVM

10 голосов
/ 06 сентября 2010

Включает ли вызов Java через две разные командные строки две разные JVM или два отдельных экземпляра одной и той же JVM.

Ответы [ 4 ]

23 голосов
/ 06 сентября 2010

JVM - это виртуальная машина Java, пространство памяти, в которое загружаются классы (код) и объекты (данные) используются совместно. JVM эквивалентен процессу операционной системы.

Когда вы вводите java... в командной строке, вы выполняете независимый процесс, который загружает классы Java в память, базовые классы из Java и ваши (из указанных вами файлов .class или .jar).

Другая команда java... загрузит другой процесс с собственной памятью и сама загрузит классы.

Беспорядок слов экземпляра : когда вы говорите «два экземпляра одной и той же JVM». Обычно экземпляр JVM называется отдельным процессом, то есть загруженной независимой JVM. Если вы говорите: два процесса работают под управлением JVM 1.5, хорошо, это одна и та же JVM в том смысле, что это одна и та же версия, но это разные процессы, разные «экземпляры», независимые во всех смыслах.

Путаница с веб-приложением: Веб-приложение (например) - это просто набор классов и объектов, созданных на основе определенного URL-адреса на веб-сервере. Вы можете запустить Tomcat с 10 различными приложениями, то есть с 10 различными группами классов и объектов, каждый из которых выполняет разные запросы, но фактически они совместно используют одно и то же пространство памяти (процесс ОС). Веб-приложение не может касаться объектов другого веб-приложения, потому что никто не дает ему ссылку на другие объекты (и классы каким-то образом скрыты, но это другая история, называемая: загрузка классов).

2 голосов
/ 06 сентября 2010

В чем разница в вашем вопросе? Я бы сказал: два разных экземпляра JVM. :)

Каждый запуск команды java вызывает новый экземпляр JVM. Запущенное Java-приложение может запускать новые потоки Java (как это делает Tomcat с веб-приложениями).

1 голос
/ 06 сентября 2010

Если вы запустили java.exe от Sun из JDK / JRE версии 1.6 с одного и того же исходного пути дважды, вы получите два отдельных и разных экземпляра JVM.Там не будет никакого обмена между ними, если вы не настроили его через свои приложения.Если вы хотите запустить две разные JVM, вам придется запустить java.exe одного типа (скажем, 1.5) из одного места и java.exe (версия 1.6) из другого.

1 голос
/ 06 сентября 2010

Две отдельные JVM. Вы можете запускать множество вещей внутри одной и той же JVM (скажем, 10 веб-приложений, обслуживаемых одним экземпляром Tomcat), но для запуска tomcat есть только 1 команда java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...