【发布时间】:2020-10-15 17:46:14
【问题描述】:
假设我有三个 Java 应用程序; A 和 B 是 32 位,C 是 64 位。他们都配置了
maxHeapPercent = 50
maxHeapSize = 1024
根据documentation,它读取“50% 的可用内存不少于 1024 MB”。现在我的问题是,如果我在同一台机器上运行这些应用程序会发生什么?
- 假设机器有 16GB RAM,那些“50%”加起来会不会是 3x8GB=24GB,这超出了可用范围?
- 或者
A和B(是32 位应用程序!)每个只允许4GB,使用2GB?最终达到 2x2GB+1x8GB=12GB?还是 2x4GB+1x8GB=16GB,什么都不留给操作系统? - 这会导致崩溃和/或
OutOfMemoryError吗?还是只会强制交换?
【问题讨论】:
-
maxHeapSize定义了一个上限,并不意味着“不少于”。所以你的应用程序永远不会超过 1GB -
maxHeapSize中的“最大值”暗示,是的。然而,链接文档中的内容与引用的完全一致。
标签: java memory out-of-memory launch4j