有没有办法在Java进程之间共享核心库(或其他方式来最小化JVM初始内存影响)
所以这就是我的理由。我正在玩微服务。我跑了不少他们。我为128M
设置了他们的堆,因为它足够了。{但我注意到Linux进程消耗得更多。
如果我从here
中理解正确的话Max memory = [-Xmx] + [-XX:MaxPermSize] + number_of_threads * [-Xss]
虽然我使用的是Java 8,但是烫发大小可能不再是问题了吗?或是它。
有初始"核心" JVM内存占用......我想知道你是否听说过以某种方式分享#34;核心"进程之间的内存(因为它实际上是相同的)。或者在运行java的许多进程时以任何方式处理额外的成本。
答案 0 :(得分:0)
从概念上讲,你问的是你是否可以fork
一个JVM - 因为分叉(通常)使用写时复制存储器语义,这可以是一种有效的节省空间的措施。不幸的是,正如this answer中所讨论的那样,不支持JVM,并且通常不实用。非Unix系统无法有效分叉,并且分叉JVM必须以凌乱的方式解决许多其他副作用。从理论上讲,你可能会分叉一个JVM进程,但是你会直接进入“未定义的行为”领域。
避免JVM启动成本的“正确”方法是减少首先启动所需的JVM数量。 Java是一种高度并发的语言,支持通过其线程模型对开箱即用的公共内存进行共享访问。如果您可以重构代码以在同一JVM中并发运行,那么您将看到更好的性能。