gpt4 book ai didi

java - Java 虚拟机在执行多个 Java 应用程序时会做什么

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:27 26 4
gpt4 key购买 nike

通过阅读此 article ,我知道每个 java 应用程序都会在特定的 Java 虚拟机实例中运行。因此,如果我执行以下命令(“Java -jar test1.jar”,“Java -jar test2.jar”,我将在系统中获得两个进程。如果每个命令都使用默认堆大小,例如 256M。总的内存开销是512M,对吧?我还有其他问题:

  • Java虚拟机是守护进程,随系统一起启动吗?
  • 当我执行“java -jar test1.jar”时,它会创建一个Java 虚拟机实例,然后执行主要功能。这是否意味着每个运行的 Java 应用程序都是 Java 虚拟机的子线程或进程?
  • 是否每个运行的 java 应用程序都是独立的,其他应用程序不能从这个运行的 java 应用程序中获取变量、方法、常量等?
  • 如果一个正在运行的 java 应用程序崩溃了,是否会影响其他正在运行的 java 应用程序?

PS:我用谷歌搜索并得到了很多不同的答案,我完全糊涂了。任何可以帮助我解决此类问题或更深入的 Java 虚拟机的人。例如,它是如何工作的。

最佳答案

JVM 是一个标准进程,就像其他任何进程一样。因此,两者之间没有隐式通信或状态共享。每个都有自己的堆、线程等。如果你杀死一个,它不会影响另一个。

共享的是 JVM 本身的代码页。内核足够智能,可以识别运行两次的相同二进制文件(任何 二进制文件 - 而不仅仅是 JVM)并重新使用图像。这只适用于实际的二进制代码——而不是它的状态。参见 here欲了解更多信息。 Linux.

JVM 不是守护进程,但可以在系统启动时作为 Windows 服务或 Unix/Linux 进程启动(通过 /etc/init.d 脚本)。这就是您(比方说)在机器启动时运行用 Java 编写的 Web 服务的方式。

关于java - Java 虚拟机在执行多个 Java 应用程序时会做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12508951/

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