【问题标题】:Whether JVM runs in User Process or Separate ProcessJVM是运行在用户进程还是单独进程中
【发布时间】:2017-11-13 04:03:57
【问题描述】:

我已将 JVM 视为一个进程和一个守护线程,并且 按照 Java,每个进程都有自己的 JVM 和垃圾收集器

有人可以详细解释一下吗?

“JVM 是在用户应用程序进程上还是在单独的进程中运行。” ??

在任何地方,我都将它作为应用程序进程的一个实例来阅读。 我也读了它,因为 GC 有多个线程。

GC是一个单独的进程还是它在用户进程上创建线程?

【问题讨论】:

  • GC 从来都不是一个单独的进程。它在每个 JVM 进程中只使用一个或多个线程。
  • Java 支持线程。由每个实现来决定如何做。
  • stackoverflow.com/users/150978/robert, JVM 是不是每个应用进程都是独立的进程?
  • @candy 要回复某人,请使用他们的姓名前面加上@candy 之类的符号,而不是指向他们个人资料的链接。
  • JVM 始终是由java ... 启动的单个进程。有些容器允许在单个 JVM 中运行多个应用程序,例如Servlet,其中每个 Servlet 大多与其他 Servlet 隔离(它们仍然共享内存、CPU 和一些全局数据)。 +++ GC 与 JVM 的许多其他部分非常紧密地耦合,因此它不能是一个单独的进程。

标签: java garbage-collection jvm jvm-hotspot java-threads


【解决方案1】:
  1. JVM 正在通过在 Windows 上执行 java.exe/javaw.exe 或在 Unix/GNU 上执行 java 启动的进程内运行。它的所有者将是运行可执行文件的人。如果两个 java 程序正在运行,则会创建两个不同进程的 JVM。

  2. GC是JVM内部的一个线程,见here

例如,Java 垃圾收集器是一个守护线程。

【讨论】:

  • 嗨 Dabiuteef,感谢您提供信息和链接。我的直截了当的问题是 JVM 是与用户进程分开的进程吗?
  • @candy 它在你启动它的任何上下文中运行。运行一个长期存在的 Java 应用程序并查看进程所有者。
  • @Dabiuteef,非常感谢您的回答。我的问题得到了回答,我接受了你的回答
【解决方案2】:

JVM 可以通过JNI_CreateJavaVM 从现有进程中启动。 JVM 通常由多个线程组成,无论它是在拥有的进程中运行还是作为单独的进程运行。术语“应用程序”与进程和线程处于不同的抽象级别。

【讨论】:

  • 为了便于理解,提及了商定的申请条款。我相信 JVM 中的多线程是为了 GC。 JVM中有没有其他线程
猜你喜欢
  • 2012-01-14
  • 2011-08-15
  • 1970-01-01
  • 2014-09-12
  • 2015-05-20
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
相关资源
最近更新 更多