在Java进程之间共享核心库

在Java进程之间共享核心库,java,core-data,memory,jvm,Java,Core Data,Memory,Jvm,有没有一种方法可以在Java进程之间共享核心库(或者其他方法可以最小化JVM对初始内存的影响) 这是我的案子。我在玩微服务。我运行了很多。我将他们的堆设置为128M,因为这对他们来说已经足够了。但我注意到Linux进程消耗的资源要多得多 如果我的理解正确的话 虽然我使用的是Java8,所以可能烫发大小不再是问题了?或者是这样 存在初始“核心”JVM内存占用。。。我想知道你是否听说了一种在进程之间共享“核心”内存的方法(因为它实际上是一样的)。或者在运行许多java进程时处理额外成本的任何方法 从

有没有一种方法可以在Java进程之间共享核心库(或者其他方法可以最小化JVM对初始内存的影响)

这是我的案子。我在玩微服务。我运行了很多。我将他们的堆设置为
128M
,因为这对他们来说已经足够了。但我注意到Linux进程消耗的资源要多得多

如果我的理解正确的话

虽然我使用的是Java8,所以可能烫发大小不再是问题了?或者是这样


存在初始“核心”JVM内存占用。。。我想知道你是否听说了一种在进程之间共享“核心”内存的方法(因为它实际上是一样的)。或者在运行许多java进程时处理额外成本的任何方法

从概念上讲,您是在问是否可以使用JVM—因为forking(通常)使用写时复制内存语义,这是一种有效的节省空间的措施。不幸的是,正如forking中所讨论的,JVM不受支持,而且通常不实用。非Unix系统无法有效地分叉,而且分叉JVM还必须以混乱的方式解决许多其他副作用。从理论上讲,您可能会分叉一个JVM进程,但您将直接进入“未定义的行为”领域


避免JVM启动成本的“正确”方法是首先减少需要启动的JVM数量。Java是一种高度并发的语言,它通过线程模型支持对公共内存的即时共享访问。如果您可以重构代码以在同一个JVM中并发运行,您将看到更好的性能。

虽然这是一个崇高的问题,但我怀疑答案是“否”。为什么不在不同的微服务之间共享JVM?将JVM放在不同进程上的好处之一是,一个进程的失败(如OOM错误)不会影响其他进程。
Max memory = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss]