docker Java 应用堆内存配置

这篇具有很好参考价值的文章主要介绍了docker Java 应用堆内存配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

本文主要是讲解 InitialRAMPercentage、MinRAMPercentage, MaxRAMPercentage 三个 JVM 参数之间的区别。参数由 Java 8 update 191 引入,主要是用于配置运行在物理机或者容器中的 Java 应用堆内存大小。

InitialRAMPercentage

-XX:InitialRAMPercentage 用于配置堆的初始化大小。假如物理机或者容器的内存大小(limit 限制)为 1 GB, -XX:InitialRAMPercentage=25,那么堆内存大小大概为 250 MB(1 GB 的 25%)。

-Xms 参数未指定时,-XX:InitialRAMPercentage 用于配置堆的初始化大小。如果指定了 -Xms-XX:InitialRAMPercentage 将会被 JVM 忽略。

MaxRAMPercentageMinRAMPercentage
以上两个参数主要用于配置堆的最大内存大小(JDK 的开发团队起的名字 -XX:MinRAMPercentage 很容易让人理解为是堆的最小内存大小,然而并不是)。

如果你的物理机(或容器)内存小于 250 MB(大约),那么 -XX:MinRAMPercentage 参数用于配置应用堆的最大内存大小。假如物理机内存大小为 100MB-XX:MinRAMPercentage=50,那么应用的最大堆内存大小为 50 MB

当你的物理机(或容器)的内存大于 250 MB(大约),-XX:MaxRAMPercentage 参数将用于配置应用堆的最大内存大小。

我们举两个例子来验证以上结论:

  • 例 1:较小的宿主机内存

我们把容器的内存限制为 100 MBMaxRAMPercentage 配置为 25, **MinRAMPercentage ** 配置为 50。那么由于宿主机的内存 100 MB 小于 250 MB,所以后者的配置应该生效,也就是如图所示,应用的最大堆大小为 48.38 MB(100 MB 的 50%)。从该例子中看出 MaxRAMPercentage 被忽略。

docker run -m 100MB openjdk:10 java -XX:MaxRAMPercentage=25 -XX:MinRAMPercentage=50 -XshowSettings:vm -version
VM settings:
Max. Heap Size (Estimated): 48.38M
Using VM: OpenJDK 64-Bit Server VM

  • 例 2:较大的宿主机内存

我们把容器的内存限制改为 1 GB,MaxRAMPercentage 配置为 25, MinRAMPercentage 配置为 50。我们看到实际的应用堆最大大小为 247.50 MB(由于宿主机内存大于 250 MB,所以前者配置生效)。

docker run -m 1GB openjdk:10 java -XX:MaxRAMPercentage=25 -XX:MinRAMPercentage=50 -XshowSettings:vm -version
VM settings:
Max. Heap Size (Estimated): 247.50M
Using VM: OpenJDK 64-Bit Server VM

当 -Xmx 未指定时,-XX:MaxRAMPercentage 及 -XX:MinRAMPercentage 用于配置堆的最大内存大小。如果 -Xmx 指定了,那么以上两个参数将会被 JVM 忽略。如图:

docker run -m 1GB openjdk:10 java -XX:MaxRAMPercentage=25 -XX:MinRAMPercentage=25 -Xmx512m -XshowSettings:vm -version
VM settings:
Max. Heap Size: 512.00M
Using VM: OpenJDK 64-Bit Server VM

-Xmx512m、-XX:MaxRAMPercentage=25、-XX:MinRAMPercentage=25 同时指定了,但是只有 -Xmx512m 起到了作用。文章来源地址https://www.toymoban.com/news/detail-855240.html

结论

  • 用 -XX:InitialRAMPercentage 配置你的应用堆初始化内存大小(前提是 -Xms 未配置)。
  • -XX:MinRAMPercentage、-XX:MaxRAMPercentage 用于配置最大堆大小(前提是 -Xmx 未配置)。
  • -XX:MaxRAMPercentage 应用于大多场景,毕竟主流的企业级 Java 应用内存已经超过了 250 MB。除非构建的是微型应用,物理机内存小于 250 MB,你才需要使用 -XX:MinRAMPercentage。

到了这里,关于docker Java 应用堆内存配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第六章、用户体验五要素之框架层解析(本文作用是通俗讲解,让你更容易理解)

            结构层定义产品运行形式,框架层则用于确定用什么样的功能或者形式来实现。在框架层,功能型和信息型产品都需要信息设计,不同的是功能型还需要界面设计,而信息型产品则是导航设计。         1、界面设计:如果涉及提供给用户做某些事的能力,那就是界

    2024年02月09日
    浏览(32)
  • 【Docker】什么是Docker呢?本文带你洞悉

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前专攻C/C++、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL、蓝桥杯,喜欢OJ的小伙伴可以看一手 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️学习应使你快乐!望与诸君

    2024年02月12日
    浏览(64)
  • 【Docker】Docker Compose,yml 配置指令参考的详细讲解

    作者简介: 辭七七,目前大二,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 在现代软件开发中,应用程序的部署和管理是一个复杂而关键的任务。Docker Compose是一个强大的工具,可以简化多

    2024年02月05日
    浏览(28)
  • 【Docker】Docker Desktop配置资源:cpu、内存等(windows环境下)

    Docker 是指容器化技术,用于支持创建和使用 Linux® 容器(LXC技术) 。 我们在 Window 上安装 Docker Desktop ,需要基于 Linux 环境。 在 Windows上,Docker Desktop 为我们提供通过了两个选项:WSL 与 Hyper-V 。 1.WSL2和hyper-v区别 简单来说: wsl是一个运行在我下面的解释linux命令的程序,可

    2024年02月09日
    浏览(39)
  • Tomcat多实例配置与应用的深入讲解

    Tomcat是一款广泛使用的Web服务器,它可以同时处理多个HTTP请求。在某些场景下,我们需要在同一台服务器上部署多个Tomcat实例,以满足不同的业务需求。本文将详细介绍如何配置Tomcat多实例,并通过实际案例展示其应用场景。 下载Tomcat安装包 首先,我们需要从官网下载Tom

    2024年02月22日
    浏览(23)
  • 【Docker】Docker的应用包含Sandbox、PaaS、Open Solution以及IT运维概念的详细讲解

    前言   Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介: 热爱跑步的恒川 ,致

    2024年02月08日
    浏览(27)
  • Java应用堆外内存泄露问题排查

    最近有个java应用在做压力测试 压测环境配置: CentOS系统 4核CPU 8g内存 jdk1.6.0_25,jvm配置-server -Xms2048m -Xmx2048m 出现问题如下 执行300并发,压测持续1个小时后内存使用率从20%上升到100%,tps从1100多降低到600多。 首先使用top命令查看内存占用如下 然后查看java堆内存分布情况,查

    2024年02月12日
    浏览(29)
  • 【Docker】Docker对用户的应用程序使用容器技术遵循的五个步骤和GRSEC详细讲解(文末赠书)

    前言 Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介: 热爱跑步的恒川 ,致力于

    2024年02月08日
    浏览(46)
  • Java 配置文件的使用(附代码详细讲解)

    Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍Java在配置文件中的试用,在idea里MySql数据库连接信息为什么要放在配置文件中?怎么读取配置文件信息?以及部分理论知识 🍉 欢迎点赞  👍  收藏  ⭐ 留言评论  📝 私信必回哟 😁 🍉 博主收将持续更新学习记录获,友友们有任

    2024年02月22日
    浏览(29)
  • 杂记 | 记录一次使用Docker安装gitlab-ce的过程(含配置交换内存)

    最近想自建一个gitlab服务来保存自己的项目,于是找到gitlab-ce的方式。 开工前先梳理一下状况: 具备一台云服务器(我用的腾讯云) CentOS7的系统,已安装好了docekr和docker-compose(如果没装先自行装一下) 服务器内存为4G(这个内存有点吃紧,先凑合用) 服务不直接对外暴露

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包