问题标签 [jcmd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
265 浏览

java - 码头没有出现在 jcmd

当我启动 jcmd 时,它会显示除 Jetty 之外的所有 Java 进程,为什么?

指令:

附言:

0 投票
1 回答
215 浏览

java - 适用于不同用户的 JCMD

我需要从 jcmd 获取进程的参数,该进程由同一台 PC 上的其他用户启动。但我不能使用管理员帐户来做到这一点。我也尝试使用“runas”功能,但结果相同。有没有办法捕捉这个过程,除了使用同一个用户? 在此处输入图像描述

在此处输入图像描述

0 投票
2 回答
1841 浏览

java - jcmd - 命令 ManagementAgent.start 用于什么?

用于jcmd监控java进程时,有一个命令ManagementAgent.start

检查手册页/oracle 文档/google,没有找到任何描述。

问题是:

  • 它是干什么用的?
0 投票
1 回答
393 浏览

java - jcmd - `jcmd VM.flags -all` 的最后一列的含义

运行以下命令列出所有可用的 jvm 标志:

然后在最后一列中,找到以下值(使用 JDK1.8,在 linux 上)

问题是:

我只知道一些值的含义,我已经给出了解释,其余的含义是什么?

0 投票
2 回答
1059 浏览

java - jcmd VM.set_flag,哪些标志是可写的?

我正在尝试使用 jcmd VM.set_flag 选项。但是遇到了一个错误,说“只能设置'可写'标志”。什么是可写标志?

获取我的 pid:

尝试更改 vm 标志:

编辑:它适用于可管理的标志,以下是成功的命令。

0 投票
1 回答
883 浏览

java - JCMD 的代码/内部部分包含什么?

为基于 JVM 的服务确定 docker 容器的尺寸非常棘手(众所周知)。我很确定我们稍微缩小了容器的尺寸,并想澄清一些与我们在监控时看到的特定 jcmd(本机内存跟踪器)输出有关的问题。

问题:

JCMD 输出在这里。

直接字节缓冲区JMX 属性在这里。

一些背景细节:

设置:

  • 基于 Spring Boot 的应用程序
  • JVM 选项:

    -server -Xms1792m -Xmx1792m -XX:MetaspaceSize=128M - XX:MaxMetaspaceSize=192M -XX:+UseG1GC -XX:+UseStringDeduplication - XX:MaxDirectMemorySize=256m -XX:NativeMemoryTracking=detail

  • 在 AWS/EC2 中运行的 Docker 容器 2500MiB
0 投票
0 回答
636 浏览

java - Java 进程内存使用与 jcmd 提交内存的偏差

与跟踪 JVM 进程的 jcmd 报告的内存使用情况相比,我看到 java 进程(在 docker 中运行)的内存使用情况存在很大差异。根据 jcmd 的 JVM 内存使用量非常稳定,但来自 ps (RSS) 的内存使用量不断增长,大约是 JVM 提交的内存差异的两倍。JVM 差异是由少量代码缓存增加和少量内部内存增加引起的。

问题:

  • 什么会导致这种差异,我如何跟踪它以解决根本原因?
  • 为什么 ps 报告的内存使用量和提交的 JCMD 之间存在如此大的差异?

ps aux 跟踪的内存将不断增加,直到内核 OOM(我们正在使用内存软限制来延迟不可避免的 OOM)。

例如:时间点#1

  • ps辅助RSS 2682980
  • JCMD Native Memory Tracking:总计:reserved=3625201KB,committed=2423489KB

时间点#2

  • PS辅助RSS 2775140
  • JCMD Native Memory Tracking:总计:reserved=3627331KB,committed=2427371KB

其他详情:

  • 交换被禁用
  • java.nio.BufferPool.MemoryUsed:10.3MB
  • JVM OPTS:-javaagent:/opt/newrelic/newrelic.jar -server -Xms1792m -Xmx1792m -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=192M -XX:+UseG1GC -XX:+UseStringDeduplication

一些版本:

  • Linux:amzn-ami-xxx-amazon-ecs-optimized
  • Docker 版本:17.06.2-ce
  • java版本“1.8.0_121”
  • Java(TM) SE 运行时环境 (build 1.8.0_121-b13)
  • Java HotSpot(TM) 64 位服务器 VM(内部版本 25.121-b13,混合模式)
0 投票
0 回答
814 浏览

java - 处理 MetaSpace 泄漏问题(内存不足)

我正在研究一个应用程序一段时间。最近,在我的工作场所,对应用程序(使用 Jersey REST 和 Spring 框架实现的 Java Enterprise Web 应用程序)进行了一些重新设计。

我们注意到由于内存不足异常,应用程序开始抛出错误。我们注意到应用程序堆是一致的,但是元空间一直在增加,而根本没有减少。

作为其中的一部分,我已经开始分析性能统计信息,JCMD GC.class_stats。我一直看到一些 JAXB 类正在增加,但没有减少。这些 JAXB 类应该在 Web 请求完成后关闭。你能帮我解决这个问题吗?

提前致谢。

0 投票
1 回答
198 浏览

java - jcmd - 在运行的 JVM 中处理自定义命令

jcmd实用程序提供多个诊断命令: https ://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html

是否可以有自定义命令并在正在运行的 JVM 中处理它们?

就像是:jcmd $PID myCmd

0 投票
1 回答
3617 浏览

java - 使用 JCMD 的 Java 线程转储

我在 Ubuntu Linux 机器上使用 Java1.8。使用以下命令创建了一个线程转储:

将文件复制到本地MAC机器并双击在JMC中打开。它无法打开。如何打开它?

我试图在安装了内存分析器的 STS 中打开相同的文件,它不能识别 jfr 文件。

1)上述方法有什么问题?

2) 分析线程和堆转储的最佳工具是什么?

3) 堆或线程转储大小是否取决于 RAM 大小?我们有 64 GB ram 系统,分配 40 GB 给一个应用服务器。这有什么问题吗?