相关疑难解决方法(0)

Java选项-Xmx代表什么?

java -Xmx1024m filename

什么-Xmx意思?

java

248
推荐指数
5
解决办法
62万
查看次数

说明新的JVM内存参数的含义InitialRAMPercentage和MinRAMPercentage

参考:https : //bugs.java.com/bugdatabase/view_bug.do?bug_id=8186315

我真的很难找出MinRAMPercentage的功能,尤其是与InitialRAMPercentage相比。

我假设InitialRAMPercentage设置了启动时的堆数量,MinRAMPercentage和MaxRAMPercentage设置了允许JVM收缩/增长到的堆的上下限。

显然不是这样。当我启动JVM(使用UseContainerSupport,具有这些新的内存设置参数)时,如下所示:

java -XX:+UseContainerSupport -XX:InitialRAMPercentage=40.0 -XX:MinRAMPercentage=20.0 -XX:MaxRAMPercentage=80.0 -XX:+PrintFlagsFinal -version | grep Heap
Run Code Online (Sandbox Code Playgroud)

设置InitialHeap和MaxHeap,没有找到“最小堆大小”值;因此,该MinRAMPercentage似乎从未被使用过。

超级困惑,显然我不是唯一的一个。正如我在这里这里所收集的那样,OpenJ9帅哥似乎也没有完全解析这些选项的意图。他们似乎选择不实施MinRAMPercentage afaics。

因此:设置MinRAMPercentage的实际预期用途和效果是什么?

java jvm docker

20
推荐指数
1
解决办法
6174
查看次数

'MaxRAM'JVM参数表示什么?

我正在查看在Linux服务器上运行的JVM的配置.我跑的时候

java -XX:+PrintFlagsFinal | less | grep -iE 'MaxRam'
Run Code Online (Sandbox Code Playgroud)

这似乎基本上打印出JDK知道的每个参数

我知道了

uint64_t MaxRAM = 137438953472  {pd product}
Run Code Online (Sandbox Code Playgroud)

但我似乎无法在这面旗帜上找到太多文件.

我发现这"{pd product}"意味着"Platform Dependent Product: An officially supported, internal JVM option"

任何人都知道这个参数的确切含义,或者我可以在哪里更详细地阅读特定于平台的JVM标志?

其他详细信息:

Java -version :.

java版"1.6.0_35"Java(TM)SE运行时环境(版本1.6.0_35-b10)Java HotSpot(TM)64位服务器VM(版本20.10-b01,混合模式)

uname -a

Linux [SERVERNAME] 2.6.32-431.17.1.el6.x86_64#1 [日期] x86_64 x86_64 x86_64 GNU/Linux

java linux jvm

4
推荐指数
1
解决办法
5003
查看次数

docker 容器中的 Java 内存设置

我有一个基于 Java8 OpenJDK 的 Java 应用程序。它运行在一个 docker 容器中,该容器的容量限制为 20GB。

tomcat的-Xms和-Xmx设置设置如下:

-Xms = 容器内存的 60%(由 cgroup 指定) - 因此 12GB -Xmx = 容器内存的 80%(由 cgroup 指定) - 因此 16GB

这会在容器上留下 4GB 的可用空间,这通常很好,但有时在负载下,我会看到 docker 容器因 OOM 而退出(并且 java 进程被终止),因为容器内存使用量已超过 20GB。

我知道 -Xmx 设置是针对堆的,而不是针对整个 Java 进程和 JVM,因此预计容器上的 4GB“净空”就足够了,但看起来还不够。

我知道所有用例都大不相同,但我的问题是,一般来说,对于内存限制为 20GB 的容器来说,设置 -Xmx 设置是否太高。

我正在考虑使用 MaxRAM 设置,同样,我知道它只决定堆内存,但我不确定这是否会产生积极的影响?

通常情况下,您使用 MaxRAM 或 -Xmx 之一,还是同时设置两者有什么好处?

如果我使用 MaxRAM 而不是 -Xmx,java 将如何向堆分配内存?是否有一个简单的算法,例如 MaxRAM 设置的 50%?java 这样做会更有效地管理内存吗?

java memory jvm docker

4
推荐指数
1
解决办法
5630
查看次数

标签 统计

java ×4

jvm ×3

docker ×2

linux ×1

memory ×1