监控java本机内存

2023-12-21

我们正在监控 jvm 指标,如堆、元空间、线程和 gc 计数,并且我们能够将这些指标推送到像 prometheus 这样的监控服务器。同样,我们想要跟踪 Java 本机内存指标(jcmd VM.sumary 的输出)。 我的问题是,是否可以通过调用任何 jvm 运行时类来获取这些指标?


是的,可以直接从 Java 应用程序获取 NativeMemoryTracking 摘要:

import javax.management.JMException;
import javax.management.ObjectName;
import java.lang.management.ManagementFactory;

public class DiagnosticCommand {

    public static String execute(String command, String... args) throws JMException {
        return (String) ManagementFactory.getPlatformMBeanServer().invoke(
                new ObjectName("com.sun.management:type=DiagnosticCommand"),
                command,
                new Object[]{args},
                new String[]{"[Ljava.lang.String;"});
    }

    public static void main(String[] args) throws Exception {
        String summary = DiagnosticCommand.execute("vmNativeMemory", "summary");
        System.out.println(summary);
    }
}

不过,您必须解析文本输出。

请注意,NMT 报告中最重要的部分可以使用指定的 MBean 单独跟踪,包括

  • Java堆
  • 代码缓存
  • 元空间
  • 压缩类空间
  • 直接字节缓冲区和映射字节缓冲区

See 内存池MXBean https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html and 缓冲池MXBean https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/BufferPoolMXBean.html.

正如我在评论中所说,监视 NMT 输出在实践中并不总是有帮助,因为它并不直接反映进程使用的实际物理内存。 NMT可以报告少得多 https://stackoverflow.com/questions/44734359/jvm-is-using-more-memory-than-native-memory-tracking-says-how-do-i-locate-where内存比实际使用情况,或者它也可以报告more https://stackoverflow.com/questions/31173374/why-does-a-jvm-report-more-committed-memory-than-the-linux-process-resident-set从操作系统的角度来看,内存比进程消耗的内存要多。

由于 NMT 可能会错过 Java 进程消耗的大量操作系统内存,因此监视进程的驻留集大小 (RSS) 也很有用。在 Linux 上,这可以通过解析来完成/proc/[pid]/stat http://man7.org/linux/man-pages/man5/proc.5.html or /proc/[pid]/status http://man7.org/linux/man-pages/man5/proc.5.html.

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

监控java本机内存 的相关文章

  • 在 String 值之后打印 int 值

    我有以下示例代码 int pay 80 int bonus 65 System out println pay bonus bonus pay 有人可以向我解释一下为什么我得到以下输出 145 6580 您的代码正在从左到右解释表达式 pa
  • Java,顺序流在哪个线程中执行?

    在阅读有关流的文档时 我遇到了以下句子 attempting to access mutable state from behavioral parameters presents you with a bad choice if you
  • 如何在 Android 中的 Chrome 或 Firefox 等特定浏览器的 Web 视图中加载应用程序

    我是 Android 新手 我正在做一个应用程序 我需要在平板电脑上的 Web 视图中加载现有的应用程序 在平板电脑中 当我使用 Web 视图加载应用程序时 我的应用程序将加载到默认浏览器中 如何在平板电脑上的 Web 视图中的特定浏览器
  • 是否可以使用 Java 读写 Parquet,而不依赖 Hadoop 和 HDFS?

    我一直在寻找这个问题的解决方案 在我看来 如果不引入对 HDFS 和 Hadoop 的依赖 就无法在 Java 程序中嵌入读写 Parquet 格式 它是否正确 我想在 Hadoop 集群之外的客户端计算机上进行读写 我开始对 Apache
  • Hashset - 创建 Set 后使对象相同

    如果我们在 HashSet 中添加两个不同的对象 可变的 然后通过调用 setter 更改对象的值 使它们相同 则大小仍然是 hashSet 的 2 我无法理解其原因 public static void main String args
  • Selenium 和 TestNG 同时使用“dependsOn”和“priority =”问题

    我正在努力在 GUI 自动化测试中实现更好的工作流程控制 我首先从dependsOn开始 但很快发现缺点是如果一个测试失败 则套件的整个其余部分都不会运行 所以我改用 priority 但看到了意外的行为 一个例子 Test priorit
  • 使用全局变量从内部函数获取空字符串

    请帮助我解决一些小问题 我确信你能做到 D 我试图在 firestore 文档 user cases information 上设置一个字段 其中包含一个字段 case number 首先我声明这个全局变量 private String c
  • Maven WebApp META-INF context.xml

    我正在使用 Maven 3 并且尝试在 webapp 文件夹下添加 META INF 文件夹 所以我正在尝试执行以下操作 src main webapp META INF context xml WEB INF 下面是我的 POM 文件
  • 使用 kryo 注册课程的策略

    我最近发现了 kryonet 库 它非常棒并且非常适合我的需求 然而 我遇到的一个问题是制定一种好的策略来注册所有可以转移的类 我知道我可以在每个对象中编写一个静态方法 该方法将返回它使用的所有类的列表 但我真的不想这样做 为了我自己的时间
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • 但是创建静态实用方法不应该被过度使用吗?如何避免呢? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 随着时间的推移 java项目中引入了许多实用方法来完成更复杂和简单的任务 当使用静态方法时 我们在代码中引入了紧密耦合 这使得我们的代
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co
  • 如何在 Eclipse 中获得完全限定的类名?

    有没有一种快速方法可以在 Eclipse 中单击 Java 类并获取其完全限定名称 或将其复制到剪贴板 2016年6月29日编辑 正如 Jeff 所指出的 您只需要执行以下第二步 1 Double click on the class na
  • Time.valueOf 方法返回错误值

    我使用 Time valueOf 方法将字符串 09 00 00 转换为 Time 对象 如下所示 Time valueOf LocalTime parse 09 00 00 当我调用 getTime 来显示我得到的值时 28800000
  • JPA Web 应用程序管理策略

    我们目前正在开发一个 J2EE Web 应用程序 使用 JPA 作为我们的数据访问层 我们目前正在研究几种不同的策略来在我们的应用程序中利用缓存 Create an EntityManager per request 在请求范围内获取缓存
  • Janusgraph 0.3.2 + HBase 1.4.9 - 无法设置 graph.timestamps

    我在 Docker 容器中运行 Janusgraph 0 3 2 并尝试使用运行 HBase 1 4 9 的 AWS EMR 集群作为存储后端 我可以运行 gremlin server sh 但如果我尝试保存某些内容 我会得到粘贴在下面的堆
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • java.lang.UnsatisfiedLinkError - android studio gradle 中的 NDK?

    文件夹结构 app main java jni Android mk Application mk hello jni c res 在构建 gradle apply plugin com android application androi
  • Dart/Flutter 如何编译到 Android?

    我找不到任何具体的资源 Dart 是否被编译到 JVM 或者 Google 的团队是否编译了 Dart VM 以在 JVM 上运行 然后在 JVM 内的 Dart VM 中运行 Dart 前者更有意义 并且符合 无桥 的口号 但后者似乎更符
  • Android ClassNotFoundException:在路径上找不到类

    10 22 15 29 40 897 E AndroidRuntime 2561 FATAL EXCEPTION main 10 22 15 29 40 897 E AndroidRuntime 2561 java lang Runtime

随机推荐

  • 如何从 NSDictionary 中选择随机键?

    当我使用 NSArray 时 这很简单 NSArray array lastIndex INT MAX int randomIndex do randomIndex RANDOM INT 0 array count 1 while rand
  • Angular 4 与 ngx 无限滚动

    我正在尝试添加无限滚动ngx 无限滚动 https github com orizens ngx infinite scroll在我的 Angular 4 项目中 数组数据大约有800来自 API 的帖子 最初 我想显示 20 个帖子 每次
  • Blobstore 图像在 Google App Engine 开发服务器上消失

    我在我的网站上使用 App Engine 的高性能图像服务 并且我能够在本地计算机和生产中使一切正常工作 即我可以上传图像并使用 blob 键上的 get serving url 成功显示图像 但是 这些图像似乎不会保留在我的开发服务器上
  • 在 Pug 中打印数组的元素

    我是 Express 中使用的 Jade Pug 模板引擎的新手 我需要打印出关联数组中包含的列表对象的 name 属性 该数组作为参数从快速路由模块传递给 pug 模板 我正在尝试以不同的方式 比如 each element in lis
  • 如何使用 FontAwesome v6 导入单个图标

    我有一个 Laravel Web 应用程序 它使用 NPM Webpack 构建过程 目前正在导入 FontAwesome 的 SCSS 图标表版本 如下所示 import fortawesome fontawesome free scss
  • 为什么 Spring @Configuration 类继承不能按预期工作?

    我有一个抽象的 Spring 配置类 其中包含一个公共 bean public abstract class AbstractConfig Bean public CommonBean commonBean CommonBean commo
  • Macbook 视网膜显示屏上的 PyOpenGL

    我有一些代码在过剩窗口中使用 PyOpenGL 显示图形 在视网膜 Macbook Pro 上 此窗口以低分辨率模式显示 一个 OpenGL 像素由四个物理像素表示 如果能以完整的原始分辨率显示那就更好了 我的问题有没有什么方法可以使用 g
  • 在 Xcode 中,即使图标位于 asset 文件夹中,也看不到我的 info.plist 文件。解决办法是什么?

    我想为我的应用程序制作一个图标 我想安装一个应用程序 但遇到这样的错误 你能帮助我吗 尽管我已经编辑了 info flist 文件 但还是收到了很多错误 这就是为什么我无法将我的应用程序发送到应用程序商店 Prpblems App Stor
  • 如何比较 tarball 和文件夹的内容

    我如何比较tar原始文件夹的文件 已压缩 与原始文件夹 首先我使用创建存档文件 tar kzcvf directory name zip directory name 然后我尝试使用进行比较 tar diff vf directory na
  • JavaFX 中的 Node.setDisable() 与 setDisabled()

    继承时有两个方法可以调用javafx scene Node 我正在展示当前的 8u66 Oracle 实现 setDisable boolean public final void setDisable boolean value disa
  • 为什么通过反射更改静态只读字段后,该只读字段的输出是旧的?

    为什么只读变量 someValue 但我们仍然可以通过反射更改其值 输出为 10 尽管它实际上确实更改为 55 static class Program static readonly int someValue 10 static voi
  • 如何在 python 交互式控制台中捕获“Ctrl-D”?

    我有一个在后台线程中运行的服务器 我使用 python i 启动它 这样我就可以获得一个交互式控制台 我可以在其中输入命令并轻松调试它 但是当我按下 Ctrl D 时 由于服务器仍在后台线程中运行 因此控制台不会退出 如何捕获 Ctrl D
  • 如何阻止 anti_join 在 R 中反转排序顺序?

    我有两组按 A Z 顺序排列的名称 我使用 anti join 过滤掉第二组中存在的任何内容 例子 library dplyr t1 lt data frame Name state name Abbr state abb t2 lt da
  • JSON 替代方案(用于指定配置)?

    我喜欢 json 作为我编写的软件的配置文件格式 我喜欢它的轻量级 简单且得到广泛支持 然而 我发现 json 中有一些我非常喜欢但它没有的东西 Json 没有多行字符串或此处文档 http en wikipedia org wiki He
  • 理解 C++ 中的声明

    我正在以简单的步骤阅读 C 并遇到了一段我不理解的引用和指针代码 代码是void fn int a int b add 据我所知 它不会影响程序本身 但想知道这段代码的作用 include
  • SVG 蒙版渲染不正确

    这是一个简单的 SVG 蒙版 fiddle http jsfiddle net uj7tvokb 4
  • 为什么处理已排序数组比处理未排序数组慢?

    我有一个随机生成的 500000 个列表Tuple
  • 事件处理程序递增循环问题

    我正在使用 Xamarin Forms 创建聊天机器人应用程序 每当我向机器人发送新消息时 都会收到回复 但会自行增加一 即 User Hi Bot Hello User How are you Bot Good Bot Good 在代码中
  • Google 表格列数

    我想阅读一张纸 并且想知道它的尺寸 列数 行数 获得这些的最简单方法是什么 从 Get get Sheets getSheetsService spreadsheets values get spreadsheetId sheetRange
  • 监控java本机内存

    我们正在监控 jvm 指标 如堆 元空间 线程和 gc 计数 并且我们能够将这些指标推送到像 prometheus 这样的监控服务器 同样 我们想要跟踪 Java 本机内存指标 jcmd VM sumary 的输出 我的问题是 是否可以通过