【问题标题】:how to run a multiple instance of a jar on a linux server?如何在 linux 服务器上运行多个 jar 实例?
【发布时间】:2014-02-11 22:37:57
【问题描述】:

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

【问题讨论】:

    标签: java linux multithreading performance


    【解决方案1】:

    对于 Linux 服务器,java -cp libname.jar <class>java -jar libname.jar 的多个实例只是另一个进程,不共享(隐式)任何东西,彼此之间受到很好的保护。因此,通常运行多个相同类型的应用程序(每个应用程序都在自己的 JVM 中)就像运行文本编辑器的多个实例一样。当然,如果您的应用打开端口、写入文件和执行其他可能无法共享的操作,则可能需要执行特殊步骤(例如为每个实例分配不同的端口以进行侦听或实现文件锁定)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多