gpt4 book ai didi

jvm - 什么启动 JVM 线程?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:51:04 24 4
gpt4 key购买 nike

(如有错误请指正)

我了解到,当您通过发出 java 命令来运行 java 程序时,

java MyProg

程序将在新的 JVM 上运行。

  • 什么将程序加载到新的 JVM 中?是生成新线程的 JRE 吗?

  • 如果每个程序都在自己的 JVM 中运行,它们是否可以相互通信?

  • 我之前问过一个关于如何使用 JMX 向本地运行的 java 程序发送请求的问题。我发现如果 JMX 命令是在本地发出的,我不需要端口号。答案是客户端应用程序(例如 jconsole、jvisualvm、jprobe 等)搜索机器上运行的 java 应用程序。这很好,但是考虑到客户端应用程序将在与它要监视或与之通信的应用程序不同的 JVM 中运行,它们在没有端口号的情况下究竟如何相互交互(因为它们不在同一个 JVM 上运行)?

  • 如果有两个程序在运行,通常会有 2 个 JVM。 JVM 是否在同一个 JRE 进程中运行?这是否也意味着两个 JVM 应该能够通信?

谢谢

最佳答案

  • 程序(更具体地说是编译后的类)由 JVM 中称为系统类加载器的组件加载。 (阅读更多关于类加载器的信息 here )。 JVM 使用 native 代码库(由引导类加载器加载)来生成新线程。
  • 他们可以使用套接字、RPC 和其他 IPC 机制(通常使用 native 库访问)进行通信。
  • 不知道确切答案,但一定有一个标准端口。
  • JVM 的不同实例是不同的进程。它们在内存中不共享任何内容。 (不过,如果在同一系统上运行,它们可能会共享同一 JRE 安装的库和配置文件。这与在同一系统上运行 Firefox、Emacs 或其他应用程序的两个实例没有什么不同)。

关于jvm - 什么启动 JVM 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4077765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com