JVM | 命令行诊断与调优 jhsdb jmap jstat jps
目录
jmap
查看堆使用情况
查看类列表,包含实例数、占用内存大小
生成jvm的堆转储快照dump文件
jstat
查看gc的信息,查看gc的次数,及时间
查看VM内存中三代(young/old/perm)对象的使用和占用大小
查看元数据空间统计
查看年轻代对象的信息
查看年轻代对象的信息及其占用量
查看老年代对象的信息
查看老年代对象的信息及其占用量
查看最近一次GC统计和原因
jps
查看当前运行中java的进程
查看进程启动时传递给main()的参数
查看进程启动时的JVM参数
部分报错情况
Cannot connect to core dump or remote debug server. Use jhsdb jmap instead
ERROR: ptrace(PTRACE_ATTACH, ..) failed for 30865: Operation not permitted...
jmap
查看堆使用情况
jmap -heap [pid]
查看类列表,包含实例数、占用内存大小
jmap -histo [pid]
如果带上live则只统计活对象:
jmap -histo:live [pid]
生成jvm的堆转储快照dump文件
jmap -dump:format=b,file=dumpFileName [pid]
jstat
查看JVM统计信息,类装载、内存、垃圾收集、JIT编译等运行数据。
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
查看gc的信息,查看gc的次数,及时间
jstat -gc [pid]
信息说明:
- S0C: 年轻代中第一个survivor(幸存区)的容量 (字节)
- S1C: 年轻代中第二个survivor(幸存区)的容量 (字节)
- S0U: 年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
- S1U: 年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
- EC: 年轻代中Eden的容量 (字节)
- EU: 年轻代中Eden目前已使用空间 (字节)
- OC: 老年代的容量 (字节)
- OU: 老年代目前已使用空间 (字节)
- MC: metaspace(元空间)的容量 (字节)
- MU: metaspace(元空间)目前已使用空间 (字节)
- CCSC:当前压缩类空间的容量 (字节)
- CCSU:当前压缩类空间目前已使用空间 (字节)
- YGC: 从应用程序启动到采样时年轻代中gc次数
- YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
- FGC: 从应用程序启动到采样时老年代(全gc)gc次数
- FGCT:从应用程序启动到采样时老年代(全gc)gc所用时间(s)
- GCT: 从应用程序启动到采样时gc用的总时间(s)
查看VM内存中三代(young/old/perm)对象的使用和占用大小
jstat -gccapacity [pid]
信息说明:
- NGCMN: 年轻代(young)中初始化(最小)的大小(字节)
- NGCMX: 年轻代(young)的最大容量 (字节)
- NGC: 年轻代(young)中当前的容量 (字节)
- S0C: 年轻代中第一个survivor(幸存区)的容量 (字节)
- S1C: 年轻代中第二个survivor(幸存区)的容量 (字节)
- EC: 年轻代中Eden的容量 (字节)
- OGCMN:老年代中初始化(最小)的容量大小 (字节)
- OGCMX:老年代的最大容量(字节)
- OGC: 老年代当前新生成的容量 (字节)
- OC: 老年代的容量 (字节)
- MCMN: metaspace(元空间)中初始化(最小)的大小 (字节)
- MCMX: metaspace(元空间)的最大容量 (字节)
- MC: metaspace(元空间)当前新生成的容量 (字节)
- CCSMN:最小压缩类空间大小
- CCSMX:最大压缩类空间大小
- CCSC: 当前压缩类空间大小
- YGC: 从应用程序启动到采样时年轻代中gc次数
- FGC: 从应用程序启动到采样时老年代(全gc)gc次数
查看元数据空间统计
jstat -gcmetacapacity [pid]
信息说明:
- MCMN: 最小元数据容量
- MCMX: 最大元数据容量
- MC: 当前元数据空间大小
- CCSMN:最小压缩类空间大小
- CCSMX:最大压缩类空间大小
- CCSC: 当前压缩类空间大小
- YGC: 从应用程序启动到采样时年轻代中gc次数
- FGC: 从应用程序启动到采样时老年代(全gc)gc次数
- FGCT: 从应用程序启动到采样时老年代(全gc)gc所用时间(s)
- GCT: 从应用程序启动到采样时gc用的总时间(s)
查看年轻代对象的信息
jstat -gcnew [pid]
信息说明:
- S0C: 年轻代中第一个survivor(幸存区)的容量 (字节)
- S1C: 年轻代中第二个survivor(幸存区)的容量 (字节)
- S0U: 年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
- S1U: 年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
- TT: 持有次数限制
- MTT: 最大持有次数限制
- DSS: 期望的幸存区大小
- EC: 年轻代中Eden的容量 (字节)
- EU: 年轻代中Eden目前已使用空间 (字节)
- YGC: 从应用程序启动到采样时年轻代中gc次数
- YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
查看年轻代对象的信息及其占用量
jstat -gcnewcapacity [pid]
信息说明:
- NGCMN: 年轻代(young)中初始化(最小)的大小(字节)
- NGCMX: 年轻代(young)的最大容量 (字节)
- NGC: 年轻代(young)中当前的容量 (字节)
- S0CMX: 年轻代中第一个survivor(幸存区)的最大容量 (字节)
- S0C: 年轻代中第一个survivor(幸存区)的容量 (字节)
- S1CMX: 年轻代中第二个survivor(幸存区)的最大容量 (字节)
- S1C: 年轻代中第二个survivor(幸存区)的容量 (字节)
- ECMX: 年轻代中Eden的最大容量 (字节)
- EC: 年轻代中Eden的容量 (字节)
- YGC: 从应用程序启动到采样时年轻代中gc次数
- FGC: 从应用程序启动到采样时old代(全gc)gc次数
查看老年代对象的信息
jstat -gcold [pid]
信息说明:
- MC: metaspace(元空间)的容量 (字节)
- MU: metaspace(元空间)目前已使用空间 (字节)
- CCSC:压缩类空间大小
- CCSU:压缩类空间使用大小
- OC: Old代的容量 (字节)
- OU: Old代目前已使用空间 (字节)
- YGC: 从应用程序启动到采样时年轻代中gc次数
- FGC: 从应用程序启动到采样时old代(全gc)gc次数
- FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
- GCT: 从应用程序启动到采样时gc用的总时间(s)
查看老年代对象的信息及其占用量
jstat -gcoldcapacity [pid]
信息说明:
- OGCMN:Old代中初始化(最小)的大小 (字节)
- OGCMX:Old代的最大容量(字节)
- OGC: Old代当前新生成的容量 (字节)
- OC: Old代的容量 (字节)
- YGC: 从应用程序启动到采样时年轻代中gc次数
- FGC: 从应用程序启动到采样时old代(全gc)gc次数
- FGCT: 从应用程序启动到采样时old代(全gc)gc所用时间(s)
- GCT: 从应用程序启动到采样时gc用的总时间(s)
查看最近一次GC统计和原因
jstat -gccause [pid]
信息说明:
- LGCC:最后一次GC原因
- GCC: 当前GC原因(No GC 为当前没有执行GC)
jps
查看当前运行中java的进程
jps
查看进程启动时传递给main()的参数
jps -m
查看进程启动时的JVM参数
jps -v
部分报错情况
Cannot connect to core dump or remote debug server. Use jhsdb jmap instead
jdk版本原因所导致的,在jdk8以后需要加上 jhsdb 以运行(注意这里的格式):
jhsdb jmap --heap --pid [pid]
ERROR: ptrace(PTRACE_ATTACH, ..) failed for 30865: Operation not permitted...

新版的Linux系统(Ubuntu 11.04之后会出现这种问题)加入了 ptrace-scope 机制。这种机制为了防止用户访问当前正在运行的进程的内存和状态,而一些调试软件本身就是利用 ptrace 来进行获取某进程的内存状态的(包括GDB),所以在新版本的Linux系统,默认情况下不允许再访问了, 可以临时开启(注意权限):
echo 0 > /proc/sys/kernel/yama/ptrace_scope
永久修改:
vi /etc/sysctl.d/10-ptrace.conf kernel.yama.ptrace_scope = 0
相关文章:
JVM | 命令行诊断与调优 jhsdb jmap jstat jps
目录 jmap 查看堆使用情况 查看类列表,包含实例数、占用内存大小 生成jvm的堆转储快照dump文件 jstat 查看gc的信息,查看gc的次数,及时间 查看VM内存中三代(young/old/perm)对象的使用和占用大小 查看元数据空…...
SQL 表达式
SQL 表达式 表达式是计算值的一个或多个值、运算符和SQL函数的组合。这些SQL表达式类似于公式,它们是用查询语言编写的。 您还可以使用它们查询数据库中的特定数据集。 句法 考虑SELECT语句的基本语法,如下所示: SELECT column1, column2, …...
Unity3D 打包发布时生成文件到打包目录
有时候需要自己创建批处理文件或日志文件,在启动程序的同级目录使用,减少手动操作的时间和错误率。主要使用到的是OnPostprocessBuild方法。 1、在工程中的Editor文件夹下创建脚本 2、将文件放入Plugins的相关目录 3.脚本内容 using System.Collection…...
Elasticsearch中使用join来进行父子关联
在使用关系数据库进行开发的过程中,你可能会经常使用外键来表示父表和子表之间的关联关系,在Elasticsearch中,有哪些方法可以用来让开发者解决索引之间一对多和多对多的关联关系的问题呢 1 使用对象数组存在的问题 你可以很方便地把一个对象…...
提供一个springboot使用h2数据库是无法使用脚本并报错的处理方案
环境描述 springboot 2.6.2 mybatis-plus-boot-starter 3.5.1 mysql-connector-java 8.0.11 查阅了很多博客,说是使用spring.datasource.schema或者spring.sql.init.schema-locations指定脚本也均无效。不使用启动脚本,启动后在h2控制台ÿ…...
【组合计数】CF1866 H
Problem - H - Codeforces 题意 思路 不知道这种trick叫什么,昨天VP刚遇到过 设 f[x] 为恰好有一个最大值为 x 的方案数,我们要求这个,那就设 g[x] 为 至少有一个最大值为 x 的方案数,那么答案就是 f[x] g[x] - g[x - 1] 这里…...
JavaSpringbootmysql农产品销售管理系统47627-计算机毕业设计项目选题推荐(附源码)
摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设农产品销售管理系统。…...
一文5000字从0到1使用Jmeter实现轻量级的接口自动化测试(图文并茂)
接口测试虽然作为版本的一环,但是也是有一套完整的体系,有接口的功能测试、性能测试、安全测试;同时,由于接口的特性,接口的自动化低成本高收益的,使用一些开源工具或一些轻量级的方法,在测试用…...
蓝桥杯每日一题0223.10.23
第几天 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 简单枚举(用k来记录经过的天数) #include<bits/stdc.h> using namespace std; bool is_ren(int n) {if(n % 400 0 || (n % 4 0 && n % 100 ! 0))return true;return false; } int …...
php危险函数及rce漏洞
php代码执行语句 eval() eval()语句 eval() 会将符合PHP 语法规范字符串当作php 代码执行。 <meta charset"UTF-8"> <pre><?php$dd$_REQUEST[dd];eval($dd);?>可以执行php代码 也可以套一层system执行系统操作指令 assert()函数 assert() …...
4. 寻找两个正序数组的中位数
1. 题目 见 寻找两个正序数组的中位数 2. 解题思路 首先一看到题目说是正序数组,且时间复杂度要求在对数级别,所以自然想到了双指针中的二分法。 首先来看一下,假设输入是这两个数组,那么将其逻辑合并成一个大数组的话&#x…...
Stable Diffusion AI绘图
提示词: masterpiece, best quality, 1girl, (anime), (manga), (2D), half body, perfect eyes, both eyes are the same, Global illumination, soft light, dream light, digital painting, extremely detailed CGI anime, hd, 2k, 4k background 反向提示词&…...
MR混合现实情景实训教学系统在旅游管理专业中的应用
在旅游管理专业中,MR混合现实情景实训教学系统的主要应用包括但不限于以下几个方面: 1. 实地考察的替代:对于一些无法实地考察的景点或设施,学生可以通过MR系统进行虚拟参观,从而了解其实际情况。这不仅可以减少时间和…...
CentOS 使用线程库Pthread 库
1、Pthread 库说明 pthread 库是Linux系统默认线程库。 在Linux 系统环境中,编辑C/C程序使用pthread 库,需要添加对应的头文件,并链接pthread库。 #include<pthread.h> 2、Pthread 库核心方法 pthread_create 函数定义࿱…...
#力扣:LCP 01. 猜数字@FDDLC
LCP 01. 猜数字 - 力扣(LeetCode) 一、Java class Solution {public int game(int[] guess, int[] answer) {int cnt0;for(int i0;i<3;i){if(guess[i]answer[i])cnt;}return cnt;} }...
kafka丢数据的原因
目录 背景kafkaClient代码消息丢失的可能原因broker is downRD_KAFKA_MSG_SIZE_TOO_LARGE分区问题Kafka Broker的处理能力无法跟上,可能会出现以下情况 Some基础知识补充 背景 采用的client是librdkafka,在producerClient Send的数据时候发现会有数据丢…...
音视频编解码技术学习笔记
音视频编解码技术是音视频处理领域的重要部分,涉及到对原始音视频数据的压缩、编码和解码。以下是音视频编解码技术的一些要点和难点: 要点: 压缩技术 音视频编解码的核心是对原始音视频数据进行压缩,以减小文件大小和传输带宽…...
[C#基础训练]FoodRobot食品管理部分代码-1
代码参考: using System;namespace FoodRobotDemo { public class FoodRobot{private int[] foodCountArr;private string[] foodNameArr;public FoodRobot(){foodCountArr new int[3];foodNameArr new string[3] {"航天","航空","宇航" };}…...
YModem协议总结
《YModem协议总结》 目录 第1章 YModem协议简介 4 1.1 基本介绍 4 1.2 YModem基本介绍 4 第2章 YModem传输协议 5 2.1 起始帧的数据格式 5 2.2 数据帧的数据格式 5 2.3 结束帧数据结构 6 2.4 文件传输过程 6 2.5 CRC的计算 7 附录A 附录 8 A.1 附录 8 第1章 YModem协议简…...
ElasticSearch(ES)8.1及Kibana在docker环境下如何安装
ES基本信息介绍 Elasticsearch(简称ES)是一个开源的分布式搜索和分析引擎,最初由Elastic公司创建。它属于Elastic Stack(ELK Stack)的核心组件之一,用于实时地存储、检索和分析大量数据。 以下是Elastics…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
