首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个虚拟机器上运行多个类似的Java程序

在一个虚拟机器上运行多个类似的Java程序
EN

Stack Overflow用户
提问于 2021-08-06 22:24:47
回答 1查看 42关注 0票数 0

我的问题是关于JVM中的名称空间以及它如何处理它们。为了使这篇文章中的术语更容易一些,我将Virtual Box或VM Ware之类的虚拟机称为虚拟盒子,将Java虚拟机称为虚拟机。

假设我有一个在物理机上运行的虚拟机器。A在这个虚拟机器中安装Java运行时。现在,我在其中运行一个Java程序,然后让它继续运行。在那之后,我再一次运行同样的Java程序。(通过运行'java java of the programs‘,所以这里没什么特别的) JVM如何处理这两个java程序的内存区?第二个程序会因为两个程序使用相同的名称空间和变量名而干扰第一个程序的变量吗?

此外,如果我在相同的物理硬件上有两个不同的Virtual Boxes,并且在每个物理硬件上都启动了同一个java程序的一个实例,那么它们会有什么行为呢?

我问这个问题是因为我正在和一位java专家讨论这个问题。他声称,即使在第二种情况下,这两个程序也会相互干扰,因为Virtual boxes中的java程序使用主机系统的java虚拟机。我尊重这些家伙的知识和经验,我是java菜鸟,但这与我的每一个IT直觉都背道而驰。因为通常情况下,我会说每个程序都在自己的进程中运行,有自己的变量,也有自己的虚拟机,因此不能扰乱任何其他进程的变量。在第二种情况下,我甚至会说每个虚拟机器都在它自己的进程中,在它的物理机器中有自己的内存区。如果第二种情况是真的,这不是一个巨大的安全威胁吗?在web中,许多服务器都是虚拟化的,并且在一台物理机上有多个来自不同客户的虚拟服务器。如果我发现在另一个客户的虚拟机器上运行的是什么java程序,我不能摆弄他的变量吗?如果这是真的,我想我会在互联网上找到一些关于这个问题的东西,但我搜索了一个小时,没有找到任何来源。(虚拟机vs. java虚拟机并不能让互联网搜索变得更容易)

EN

回答 1

Stack Overflow用户

发布于 2021-08-06 22:29:38

单独的进程不共享内存(除非有意编程)。只要机器有足够的资源(cpu/ram/磁盘等),您就可以轻松地同时运行多个JVM

但是,一次只有一个进程可以绑定到网络接口上的端口号。这就是为什么单个web服务器可能必须为多个应用程序提供服务的原因

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68688022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档