Java 应用在 Kubernetes 中的内存配置

在基于物理的服务器(此处主要与容器平台进行区分,故此描述)上运行 Java 应用程序时,我们通常会使用 Java 虚拟机参数 "-Xms、-Xmx" 来指定 Java 堆内存的初始值和最大值。如果要将我们的应用程序移植到容器平台,如何在容器环境中配置 Java 堆内存大小呢?有没有最佳做法?

  • MaxRAMPercentage
  • InitialRAMPercentage
  • MinRAMPercentage

这三个参数是 JDK8U191 为适配 Docker 容器新增的几个参数,类比 Xmx、Xms

注:-XX:InitialRAMFraction、-XX:MaxRAMFraction、-XX:MinRAMFraction 已经被标记为 deprecated。

Docker 容器模式下,我们可以给每个 JVM 实例所属的 POD 分配任意大小的内存上限。比如:给每个账户服务分配 4G,给每个支付服务分配 8G。如此一来,启动脚本就不好写成通用的了,指定 3G 也不是,指定 6G 也不是。但是,有了这三个新增参数,我们就可以在通用的启动脚本中指定 75%(-XX:MaxRAMPercentage=75 -XX:InitialRAMPercentage=75 -XX:MinRAMPercentage=75)

posted @   Steven.Chow  阅读(572)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示