java - 具有 JVM 的 docker 容器的完整内存利用率

标签 java docker

我们有一个基于 Java 的微服务应用程序在 docker 容器中运行。由于服务需要不同的内存设置,因此我们必须指定 Docker 容器和 JVM 的内存限制 (-Xmx)。

我知道 Java 从 Java 10 开始就支持容器,但这意味着只有某些选项会考虑容器的资源限制。

我的问题是有什么设置可以让JVM充分利用容器的可用内存吗?例如,如果容器有 1GB,那么 JVM 通过在其堆和非堆内存(堆栈、类等)之间最佳地共享此内存来利用它。

最佳答案

没有神奇的标志可以为您调整 Java 内存的大小。一个微服务的工作负载可能与另一个微服务不同,并且需要不同的内存配置。

您必须手动设置 -Xms-Xmx 和其他参数。如果未设置,JVM 将使用默认值,例如-Xmx 将默认为可用 RAM 的 25%。

Java 8 和 9 仅具有 +XX:+UseContainerSupport,但 since Java 10现在这是默认行为。此选项使 JVM 尊重容器施加的资源限制,但不会自动扩展内存。

关于java - 具有 JVM 的 docker 容器的完整内存利用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55415580/

相关文章:

java - 当 textarea 与其他组件一起使用时,为什么 Java pack 无法正确调整框架大小?

java - java中Hashmap和ArrayList添加值的方式不同

Docker 运行和体积说明

linux - 如何在 CentOS 6.5 中安装 docker 1.9+?

mysql - 为什么 mysql-client 无法通过 docker-forwarded tcp 端口连接到 GCP cloud_sql_proxy?

java - 如何解决这个具有三个重叠形状的逻辑陈述?

java - 具有多个可选参数的 Spring Data MongoDB AND/OR 查询

java - 如何根据对象变量值的独特性将对象排序/分组到列表中?

java - 无法将 dockerized spring boot 应用程序连接到 dockerized postgresql

Docker 中的 Nginx 状态页面