Работает ли JVM в пользовательском процессе или в отдельном процессе

Я прочитал JVM как процесс и как поток демона, а в соответствии с Java каждый процесс имеет свой собственный JVM и сборщик мусора.

Может кто-нибудь, пожалуйста, объясните мне более подробно об этом.

«Выполняется ли JVM в процессе пользовательского приложения или в отдельном процессе». ??

Везде я читал это как пример для Application Process. И я также прочитал это, поскольку GC имеет несколько потоков.

Является ли GC отдельным процессом или создает потоки в пользовательском процессе?


person candy    schedule 12.11.2017    source источник
comment
GC никогда не бывает отдельным процессом. Он использует только один или несколько потоков в каждом процессе JVM.   -  person Robert    schedule 12.11.2017
comment
Java поддерживает потоки. Каждая реализация сама решает, как это сделать.   -  person Thorbjørn Ravn Andersen    schedule 12.11.2017
comment
stackoverflow.com/users/150978/robert. Является ли JVM отдельным процессом для каждого процесса приложения?   -  person candy    schedule 12.11.2017
comment
@candy Чтобы ответить кому-то, используйте его имя, которому предшествует знак at, например @candy, а не ссылку на его профиль.   -  person maaartinus    schedule 12.11.2017
comment
JVM всегда представляет собой один процесс, запущенный java .... Существуют контейнеры, позволяющие запускать несколько приложений в одной JVM, например. Сервлеты, где каждый сервлет в основном изолирован от других (они по-прежнему совместно используют память, ЦП и некоторые глобальные данные). +++ Сборщик мусора очень тесно связан со многими другими частями JVM, поэтому он не может быть отдельным процессом.   -  person maaartinus    schedule 12.11.2017


Ответы (2)


  1. JVM работает внутри процесса, который был запущен путем выполнения java.exe/javaw.exe в Windows или исполняемого файла java в Unix/GNU. Его владельцем будет тот, кто запускает исполняемый файл. Если запущены две Java-программы, будут созданы две JVM в разных процессах.

  2. GC — это поток внутри JVM, см. здесь

Например, сборщик мусора Java — это поток демона.

person Community    schedule 12.11.2017
comment
Привет Dabiuteef, Спасибо за информацию и ссылку. Мой прямой вопрос Является ли JVM отдельным процессом от пользовательского процесса? - person candy; 12.11.2017
comment
@candy Он работает в любом контексте, в котором вы его запустили. Запустите долгоживущее Java-приложение и посмотрите на владельца процесса. - person Dave Newton; 12.11.2017
comment
@Dabiuteef, большое спасибо за ответ. На мой вопрос дан ответ, и я принял ваш ответ - person candy; 12.11.2017

JVM можно запустить из существующего процесса через JNI_CreateJavaVM. JVM обычно состоит из нескольких потоков, независимо от того, работает ли она в рамках процесса-владельца или как отдельный процесс. Термин «приложение» находится на другом уровне абстракции, чем процессы и потоки.

person the8472    schedule 12.11.2017
comment
Согласованный срок применения указан для удобства. Я считаю, что несколько потоков в JVM предназначены для GC. Есть ли другие потоки в JVM - person candy; 12.11.2017