如何在linux服务器上运行jar的多个实例?

时间:2014-02-11 22:37:57

标签: java linux multithreading performance

我想知道当我们运行java程序(jar)内存分配,堆空间等的多个实例时,它是如何工作的。是否就像创建一个类的多个对象一样?如果我们想要在他们的行动过程中拥有共同的可访问内存(可以访问同一个jar的实例),那么最好的方法是什么? (类似于静态变量 - 所有实例的公共内存)

1 个答案:

答案 0 :(得分:3)

对于Linux服务器,java -cp libname.jar <class>java -jar libname.jar的多个实例只是另一个不共享(隐式)任何内容的进程,可以很好地保护彼此。因此,通常运行相同类型的多个应用程序(每个应用程序在自己的JVM中)就像运行文本编辑器的多个实例一样。因为如果你的应用程序打开端口,写入文件,并做其他可能无法共享的事情,那么可能需要特殊的步骤(比如为每个实例分配不同的端口来监听或实现文件锁)。

如果您的问题是将两个jar文件加载到单个JVM实例中,那么答案将放在多个(可能是分层相关的)classloaders的范围内,结果很大程度上取决于所使用的类加载器的拓扑。