gpt4 book ai didi

java - 当多个java程序在同一台机器上运行时

转载 作者:IT老高 更新时间:2023-10-28 11:44:55 28 4
gpt4 key购买 nike

每个 Java 应用程序都将在特定的 Java 虚拟机实例中运行。我真的对以下方面感到困惑,而谷歌搜索让我更加困惑。不同网站上的不同文章。

  1. 如果我有一个用java编写的web服务,它需要一个JVM实例来运行。那么JVM可以做一个守护进程吗?

  2. 如果是,当我们运行任何其他 java 应用程序时,它会使用这个 JVM 实例还是创建一个新实例?

  3. 任何机器中可用的主内存都是不变的。当我们同时启动 n 个 java 进程而不提供任何初始堆大小时,堆大小如何在进程之间分布?

  4. 有没有进程管理n个JVM实例,还是由操作系统自己管理?

  5. 在 GC 期间发生 stop-the-world 时,其他 JVM 实例(我假设的不同线程)是否会受到影响?

最佳答案

1) If I have a web service written in java it will need a JVM instance to run. So can JVM be made a daemon process?

是的,它可以。如何完成取决于操作系统和 Web 服务器容器本身。

2) If yes when we run any other java application it will use this instance of JVM or create a new one?

没有。每个 Java 应用程序都使用一个独立的 JVM。

每个 JVM 都是一个单独的进程,这意味着没有共享堆栈、堆等。 (通常,唯一可以共享的东西是只读段,其中包含核心 JVM 和 native 库的代码......就像普通进程可能共享代码段一样。)

3) Main memory available in any machine is constant. When we start n java processes simultaneously without providing any initial heap size how is the heap size distributed among processes?

如果您不指定大小,决定堆多大的机制取决于您使用的 JVM/平台/版本,以及您使用的是“客户端”还是“服务器”模型(对于 Hotspot JVM )。启发式不考虑其他 JVM 的数量或大小。

引用:https://stackoverflow.com/a/4667635/139985

实际上,最好直接指定堆大小。

4) Is there any process that manages n number of JVM instances or is it managed by OS itself?

两者都没有。 JVM实例的数量由可以启动进程的各种事物的 Action 决定;例如守护进程脚本、命令脚本、用户在命令行输入命令等。最终,如果操作系统资源耗尽,操作系统可能会拒绝启动更多进程,但 JVM 的处理方式与其他进程没有任何不同。

5) When stop-the-world happens during an GC are other JVM instances(different threads I assume) affected?

没有。 JVM 是独立的进程。它们不共享任何可变状态。垃圾回收在每个 JVM 上独立运行。

关于java - 当多个java程序在同一台机器上运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394560/

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