Java 如何在同一jvm中运行两个或多个应用程序

Java 如何在同一jvm中运行两个或多个应用程序,java,performance,jvm,Java,Performance,Jvm,我的中间件应用程序它使应用程序能够运行和共享数据。 我必须运行很多java应用程序。(同一台机器上可能有180个桌面应用程序——UI和数据处理应用程序。)当我在不同的jvm中运行应用程序时,我会遇到内存问题。因此,我想尝试在相同的JVM或ui下运行,并将数据处理应用程序分组并在相同的JVM下运行。可能吗 操作系统是CentOS7,应用程序是java 1.8。否,除非您的应用程序已经设计为可以共存,例如通过打包为可以部署到共享运行时平台的东西。否则,您将不得不重写所有应用程序以允许它们共存(解决类

我的中间件应用程序它使应用程序能够运行和共享数据。 我必须运行很多java应用程序。(同一台机器上可能有180个桌面应用程序——UI和数据处理应用程序。)当我在不同的jvm中运行应用程序时,我会遇到内存问题。因此,我想尝试在相同的JVM或ui下运行,并将数据处理应用程序分组并在相同的JVM下运行。可能吗


操作系统是CentOS7,应用程序是java 1.8。

否,除非您的应用程序已经设计为可以共存,例如通过打包为可以部署到共享运行时平台的东西。否则,您将不得不重写所有应用程序以允许它们共存(解决类路径冲突,确保
静态
状态不是问题,其他…),并拥有一个共享入口点(例如,单个
公共静态void main(String[])
方法来启动所有应用程序),它们将无法在同一JVM实例上运行


您的最佳选择可能是查看单独JVM实例的内存消耗,并调整启动参数以减少内存消耗。

为什么您认为如果在一个JVM中运行所有这些东西,您不会出现内存问题?现在我观察到每个JVM都会浪费单独的内存,我认为如果我可以在单个JVM中运行它,只是猜测一下,您可以调整每个JVM分配的内存量。如果您离边缘太近,以至于JVM本身造成了问题,那么您可能只需要更多的资源。180个应用程序同时运行?!这似乎确实非常极端。这与传统的PC级要求相差甚远。也许你需要真正的虚拟机和严肃的基础设施。180个256mb的应用程序每个只有46Gb。。。当然,只找到一个具有64gb RAM的强大服务器比重新构建180个进程更便宜,因为显然这些进程甚至不能通过网络相互通信,因此可以通过多台机器进行拆分最准确的解决方案是新的架构和应用程序重写?这也需要单独支付费用。我知道这是必须的,不是吗?那么写下优化这些java应用程序的方法是否更符合逻辑?