为什么 JMX 报告的 JVM 堆使用最大值会随时间变化?

2024-02-28

我的一个 hadoop 集群的名称节点上的 JVM 堆最大值配置为 8GB。当我使用 JMX 监控 JVM 时,报告的最大值不断波动,如附图所示。

http://highlycaffeinated.com/assets/images/heapmax.png http://highlycaffeinated.com/assets/images/heapmax.png

我只在我的一个(最活跃的)hadoop 集群上看到这种行为。在其他集群上,报告的最大值保持固定为配置的值。任何想法为什么报告的最大值会改变?

Update:

java版本是“1.6.0_20”

堆最大值在 hadoop-env.sh 中使用以下行设置:

export HADOOP_NAMENODE_OPTS="-Xmx8G -Dcom.sun.management.jmxremote.port=8004 $JMX_SHARED_PROPS"

ps 显示:

hadoop 27605 1 99 Jul30 ? 11-07:23:13 /usr/lib/jvm/jre/bin/java -Xmx1000m -Xmx8G

更新2:

添加了-Xms8G昨晚切换到启动命令行:

export HADOOP_NAMENODE_OPTS="-Xms8G -Xmx8G -Dcom.sun.management.jmxremote.port=8004 $JMX_SHARED_PROPS"

如下图所示,尽管模式似乎发生了变化,但最大值仍然在变化。

http://highlycaffeinated.com/assets/images/heapmax2.png http://highlycaffeinated.com/assets/images/heapmax2.png

更新3:

这是一个新图表,还显示了非堆最大值,该最大值保持不变:

http://highlycaffeinated.com/assets/images/heapmax3.png http://highlycaffeinated.com/assets/images/heapmax3.png


根据内存MXBean http://docs.oracle.com/javase/6/docs/api/java/lang/management/MemoryMXBean.html在文档中,内存使用情况分为两类:“堆”内存和“非堆”内存。 Non-Heap 类别的描述如下:

Java虚拟机管理堆以外的内存(称为非堆内存)。 Java虚拟机有一个所有线程共享的方法区。方法区属于非堆内存。它存储每个类的结构,例如运行时常量池、字段和方法数据以及方法和构造函数的代码。它是在 Java 虚拟机启动时创建的。

方法区在逻辑上是堆的一部分,但 Java 虚拟机实现可以选择不进行垃圾收集或压缩它。与堆类似,方法区可以具有固定大小,也可以扩展和收缩。方法区的内存不需要是连续的。

这个描述听起来很像永久代(PermGen),它确实是堆的一部分,并根据使用分配的内存进行计数。-Xmx旗帜。我不确定他们为什么决定单独报告它,因为它是堆的一部分。

我怀疑您看到的波动是由于 JVM 缩小和增加永久代的结果,这将导致报告的可用于非 PermGen 使用的最大堆空间相应变化。如果您可以获得 JMX 报告的堆和非堆最大值的总和,并且该总和在 8G 限制下保持恒定,则可以验证此假设。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 JMX 报告的 JVM 堆使用最大值会随时间变化? 的相关文章

  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • Oracle 中的标识符太长

    我正在尝试在 SQL Developer 中创建表 但收到此错误 错误 SQL ORA 00972 标识符太长 CREATE TABLE PACIENTE IdentificacionID number 5 TipoIdentificaci
  • 在 ASP.Net Core MVC 中使用 AJAX 提交表单

    我正在使用 ASP Net Core 2 1 并尝试在返回文件的 url 时上传文件 而不刷新页面 我正在尝试在 site js 中编写 JavaScript 因为 RenderPartial scripts 在页面末尾呈现所有脚本 因此在
  • Cassandra CQL 通配符搜索

    我有一个像这样的表结构 创建表文件 id 文本主键 fname 文本 mimetype 文本 isdir 布尔值 位置文本 在文件 位置 上创建索引 file location 表中内容如下 插入文件 id fname mimetype i
  • 将 Reactjs 连接到 Myqtthub

    您好 我对所有物联网事物都很陌生 我希望能够使用 mqtt 从 Arduino 发送和接收数据https myqtthub com https myqtthub com作为我们的经纪人 我使用以下代码进行连接 import React Co
  • 傅里叶变换+emgucv

    谁能告诉我这段代码有什么问题吗 基本上我正在尝试计算图像的 dft 并将其显示为屏幕上的图像 Image
  • 发布的歌曲 URL 是否是 Facebook 的嵌入式音乐播放器?

    我们希望我们的会员能够分享我们网站上的歌曲 并能够在 Facebook 帖子中收听这些歌曲 SoundCloud 能够做到这一点 如他们在他们的页面在这里 https www facebook com soundcloud 他们是通过成为白
  • MATLAB 中的字符串索引:单引号与双引号

    我有一个字符串矩阵 如下所示 readFiles 11221 09 11222 13 12821 06 13521 02 13522 13 13711 05 13921 01 14521 001 15712 003 它们用于以自动方式访问某
  • CUDA 使用解释器还是编译器?

    这是一个有点愚蠢的问题 但我想知道 CUDA 使用解释器还是编译器 我很想知道 因为我不太确定 CUDA 如何设法让源代码在具有不同计算能力的两张卡上运行 来自维基百科 http en wikipedia org wiki CUDA 程序员
  • 如何使用 serde_json 将“NaN”反序列化为“nan”?

    我的数据类型如下所示 derive Serialize Deserialize Debug serde rename all camelCase pub struct Matrix serde rename numColumns pub n
  • Firebase 函数返回“响应不是有效的 JSON 对象。”

    我正在尝试从以下地址发送电子邮件firebase我从我的函数调用vue应用程序 我的 firebase 函数如下所示 const functions require firebase functions const admin requir
  • 如何确保元组元素标签被保留?

    背景 我正在尝试使用带标签的元组元素将现有的重载函数替换为剩余参数 原始代码 这是原始重载函数的简化版本 function doSomething arg1 string arg2 number void function doSometh
  • 来自其他形式 VB.NET 的访问控制

    我正在 VS 2012 中开发一个有多种形式的 vb net 项目 比方说 我有一个带有 ListView 的 Form1 并且我从 Form1 调用 From2 我将此代码添加到 Form2 的 Load 事件中 Form1 ListVi
  • GitHub 中的多个分支

    我尝试使用以下说明在 github 上创建同一个第三方项目的第二个分支 https adrianshort org create multiple forks of a github repo https adrianshort org c
  • 在SQL Server 2005中,如何获取视图所依赖的其他数据库中的表?

    在 SQL Server 2008 中 对于给定数据库中的视图 我可以通过执行以下命令来获取该视图所依赖的其他数据库中的表 select distinct referenced database name referenced schema
  • 使用 spring-hateoas 使用基于 HAL 的 REST 服务

    我正在尝试使用 RestTemplate 类使用基于 HAL 的 REST 服务 响应正文如下所示 embedded school teachers name Adams state CA links self href http loca
  • 如何在 android 或 ios 移动设备上运行 Nodejs 运行时

    我正在尝试使用 Ionic Framework 为 iOS android 开发一款 chrome cast 应用程序 为此我在应用程序中需要很少的 NodeJS 包 它可以在我的桌面上运行 但我不确定它将如何在没有可用的 Node 运行时
  • Heroku Rails Rake 任务同步生产和本地数据库

    我正在尝试创建一个 rake 任务 以便我只需键入 rake db sync 即可更新我的本地数据库以匹配生产 该解决方案利用 Heroku 团队提供的代码 使用 PG 备份导入和导出 Heroku Postgres 数据库 https d
  • 查找包含集合中所有值的最短连续子数组的算法

    我有以下问题需要解决 给定一组整数 例如 1 3 2 以及随机整数数组 例如 1 2 2 5 4 0 1 1 2 2 0 3 3 找到包含集合中所有值的最短连续子数组 如果找不到子数组 则返回空数组 Result 1 2 2 0 3 Or
  • 获取Android上所有应用程序的运行时间

    嗨 我正在开发一个应用程序 我必须在其中获取running time设备上安装的所有应用程序 那么 是否可以知道别人的应用程序在手机上运行了多长时间呢 例如 gmail 应用程序在手机上运行了多长时间 有没有API为此 或者我们必须开发自己
  • 为什么 JMX 报告的 JVM 堆使用最大值会随时间变化?

    我的一个 hadoop 集群的名称节点上的 JVM 堆最大值配置为 8GB 当我使用 JMX 监控 JVM 时 报告的最大值不断波动 如附图所示 http highlycaffeinated com assets images heapma