问题标签 [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.
java - 码头没有出现在 jcmd
当我启动 jcmd 时,它会显示除 Jetty 之外的所有 Java 进程,为什么?
指令:
附言:
java - jcmd - 命令 ManagementAgent.start 用于什么?
用于jcmd
监控java进程时,有一个命令ManagementAgent.start
。
检查手册页/oracle 文档/google,没有找到任何描述。
问题是:
- 它是干什么用的?
java - jcmd - `jcmd VM.flags -all` 的最后一列的含义
运行以下命令列出所有可用的 jvm 标志:
然后在最后一列中,找到以下值(使用 JDK1.8,在 linux 上):
问题是:
我只知道一些值的含义,我已经给出了解释,其余的含义是什么?
java - jcmd VM.set_flag,哪些标志是可写的?
我正在尝试使用 jcmd VM.set_flag 选项。但是遇到了一个错误,说“只能设置'可写'标志”。什么是可写标志?
获取我的 pid:
尝试更改 vm 标志:
编辑:它适用于可管理的标志,以下是成功的命令。
java - JCMD 的代码/内部部分包含什么?
为基于 JVM 的服务确定 docker 容器的尺寸非常棘手(众所周知)。我很确定我们稍微缩小了容器的尺寸,并想澄清一些与我们在监控时看到的特定 jcmd(本机内存跟踪器)输出有关的问题。
问题:
- jcmd 报告的“内部”中是否包含直接字节缓冲区?
- jcmd报告的“代码”中除了代码缓存之外还有什么?
- 有没有一种好方法来限制 jcmd 报告的“代码”部分。我阅读了https://docs.oracle.com/javase/8/embedded/develop-apps-platforms/codecache.htm但这仅涵盖代码缓存限制,建议保留 JVM 默认值。
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
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,混合模式)
java - 处理 MetaSpace 泄漏问题(内存不足)
我正在研究一个应用程序一段时间。最近,在我的工作场所,对应用程序(使用 Jersey REST 和 Spring 框架实现的 Java Enterprise Web 应用程序)进行了一些重新设计。
我们注意到由于内存不足异常,应用程序开始抛出错误。我们注意到应用程序堆是一致的,但是元空间一直在增加,而根本没有减少。
作为其中的一部分,我已经开始分析性能统计信息,JCMD GC.class_stats。我一直看到一些 JAXB 类正在增加,但没有减少。这些 JAXB 类应该在 Web 请求完成后关闭。你能帮我解决这个问题吗?
提前致谢。
java - jcmd - 在运行的 JVM 中处理自定义命令
该jcmd
实用程序提供多个诊断命令:
https ://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html
是否可以有自定义命令并在正在运行的 JVM 中处理它们?
就像是:jcmd $PID myCmd
java - 使用 JCMD 的 Java 线程转储
我在 Ubuntu Linux 机器上使用 Java1.8。使用以下命令创建了一个线程转储:
将文件复制到本地MAC机器并双击在JMC中打开。它无法打开。如何打开它?
我试图在安装了内存分析器的 STS 中打开相同的文件,它不能识别 jfr 文件。
1)上述方法有什么问题?
2) 分析线程和堆转储的最佳工具是什么?
3) 堆或线程转储大小是否取决于 RAM 大小?我们有 64 GB ram 系统,分配 40 GB 给一个应用服务器。这有什么问题吗?