2

我正在考虑使用不同的配置文件(作为命令行参数)执行相同 java 二进制文件(套接字应用程序)的多个实例。JVM 是否正确处理了这种情况?换句话说,如果我没有任何公共资源(可以锁定的文件等),这种方法会产生任何问题吗?如果是这样,我需要注意哪些事情。

4

4 回答 4

10

如果您从命令行启动多个 java 实例,您将获得多个正在运行的 JVM(每个实例一个)。

如果没有共享资源,您应该完全没有问题。

于 2009-05-12T11:07:03.967 回答
1

正如 Matthew 之前指出的,只要没有共享资源,我们就应该看不到任何问题。

再补充一点,JVM 就像一个容器,为 java 程序提供执行环境,并且每次我们从命令行调用 java 时都会创建一个 JVM。

http://en.wikipedia.org/wiki/Java_Virtual_Machine

于 2009-05-12T11:21:40.230 回答
1

如果您有很多实例,那么您可能会遇到内存使用过多和启动时间缓慢的问题。大部分 JRE 是共享的,但不是所有内容,也不是一般应用程序代码和资源。一些 JRE 在一定程度上解决了这个问题,例如 IBM JRE 6 的最新版本共享已编译的应用程序代码。

如果您的所有代码都写得很好(例如,没有可变的静态变量(包括单例)),那么使用单个进程应该不是问题。

于 2009-05-12T11:54:27.717 回答
0

没问题。实际上,我发现相反的情况有点烦人——没有(简单的)方法可以限制同一台计算机中可启动实例的数量。

于 2009-05-12T11:09:45.570 回答