jstat简单使用操作记录

JVM调优接触不多,这边只是简单使用jstat命令观测Java堆内存垃圾回收情况。
简单处理过程为:

1、先获取到pid

先获取到pid,通过命令:
ps -ef|grep xxx-service-name
或者可以采用jps -vl或者jps -l命令查看pid

2、查看内存/GC情况

jstat命令查看,jstat是jdk自带的一个轻量级小工具
全称为:Java Virtual Machine statistics monitoring tool。
jstat -gcutil pid #统计heap的gc情况
jstat -gcutil -t pid 250 5 #250毫秒采样5次
jstat -gc -t pid 250 5

更细的监控命令还有:
jstat -gcnew pid 统计新生代的gc情况
jstat -gcold pid 统计老年代的gc情况
jstat -gccapacity pid 统计不同的generations新生代、老生代、永久代相应的heap容量信息
jstat -gccause pid 统计gc的情况以及引起gc的事情,同-gcutil

[[email protected]_xx xxx-service-name]$ jstat -gcutil 10500
S0 S1 E O P YGC YGCT FGC FGCT GCT
40.13 0.00 66.98 8.98 63.72 10 0.271 0 0.000 0.271

S0 Heap上的Survivor space 0区已使用空间的百分比
S1 Heap上的Survivor space 1区已使用空间的百分比
E Heap上的Eden space区已使用空间的百分比
O Heap上的Old space区已使用空间的百分比
P Perm space区已使用空间的百分比
YGC 从应用程序启动到采样时发生Young GC的次数
YGCT 从应用程序启动到采样时Young GC所用的时间(单位为秒)
FGC 从应用程序启动到采样时发生Full GC的次数
FGCT 从应用程序启动到采样时Full GC所用的时间
GCT 从应用程序启动到采样时用于垃圾回收的总时间

jstat -gcutil -h10 -t 10500 250 30 #每隔10行输出一次列表头

[[email protected]_xx xxx-service-name]$ jstat -gcnew 10500
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
41792.0 40320.0 9376.9 0.0 1 15 40320.0 180032.0 55208.5 24 0.531

S0C 分配S0区42M内存大小
S1C 分配S1区40M内存大小
S0U S0区已经使用的内存大小,9M左右
S1U S1区已经使用的内存大小,0M
TT tenuring threshold阀值,用于控制对象在新生代存活的最大次数
DSS desired survicor size

3、dump到本地分析是否有内存泄露

借助jmap命令即可
jmap -dump:format=b,file=/tmp/heap.bin pid
dump文件最好在FGC时候处理,如果可以的话,这样可以更加准确发现问题。

然后在本地用mat分析即可
Eclipse mat,下载地址为:http://www.eclipse.org/mat/

另外判断是否有死循环、死锁等问题,可以通过jstack命令观察。

附加补充:

1 JVM内存大致划分
JVM堆内存=新生代+老年代+持久代
新生代=S0+S1+Eden区
老年代为Old space
持久代为Perm space
2 机器配置查看
s2-xf为centos Linux64位 16核 32G内存设备。
cat /proc/version 查看操作系统版本
cat /proc/cpuinfo 查看cpu信息
free 查看内存信息
cat /proc/meminfo 查看系统内存信息

jstat简单使用操作记录

时间: 2024-08-02 08:22:28

jstat简单使用操作记录的相关文章

SequoiaDB 系列之二 :SequoiaDB的简单CRUD操作

上一篇通过一系列的操作,终于把SequoiaDB的集群部署到单台机器上了. 建议去安装体验一下吧. 在整个环境的部署的体验来看,并没有MongoDB的部署简单,但是比MongoDB的部署要清晰.MongoDB启动进程,后面跟着一大串配置,有点云里雾里的感觉,这个对初学者不太友好.而SequoiaDB的部署,着眼整个集群环境,能在脑中轻松构建一副设计图,协调节点的服务端口是11810,catalog节点的服务端口是11820,11830,11840,而数据节点的服务端口是11850,11860,1

Git操作记录

Git操作记录 恩首先说明下这只是为了避免自己忘记Git操作的时候重新跑去看一遍教程写的,只是作为记录,要教程的跑去下面的三个链接处.暂时这些内容都够个人用了.以后玩服务器了我就再更相关的内容. 昨晚部长在我电脑的Ubuntu系统上想将我的代码推上Github(来的本意是想为我整理后的django上线),发现我连配置都没配置好(之前学习的时候操作都是在VirtualBox上进行),随口问了我点问题也答得不好,被吐槽一番.于是花了一下午恶补了一下Git,顺便整理成这个记录. 恩,Github真的神

下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作

下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->where(['name' => '小伙儿'])->one(); 此方法返回 ['name' => '小伙儿'] 的一条数据: User::find()->where(['name' => '小伙儿'])->all(

使用JXL对Excel表格进行简单的操作

前段时间由于项目的需求,要求使用JXL,做完之后做下记录,方便以后查看! 首先我们要先下载JXL的JAR包:http://download.csdn.net/detail/u013352832/7777047 将JXL.JAR 包导入到项目中即可直接只用! 直接上代码 使用JXL来操作Excel表格,我们应该首先判断一下Excel表格是否存在 1 File file = new File(user.getZkfp()); 2 // 判断zkfp.xls文件是否存在,不存在则创建zkfp.xls文

Gitlab备份和恢复操作记录

前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录: 1)Gitlab的备份目录路径设置 [[email protected] ~]# vim /etc/gitlab/gitlab.rb gitlab_rails['backup_path'] = "/data/gitlab/backups" [[email protected] ~]# mkdir -p /data/gitlab/backups [[email protected] ~]# chown

Linux下IP SAN共享存储操作记录

一.简单介绍SAN,即存储区域网络(storage area network and SAN protocols),它是一种高速网络实现计算机与存储系统之间的数据传输.常见的分类是FC-SAN和IP-SAN两种.FC-SAN通过光纤通道协议转发scsi协议:IP-SAN通过TCP协议转发scsi协议,也就是IP 地址.存储设备是指一台或多台用以存储计算机数据的磁盘设备,通常指磁盘阵列,主要厂商EMC.日立等. iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用

ado.net的简单数据库操作(一)

摘要:接下来的几篇博客将要讲到如何使用ado.net实现简单的数据库操作,包括增删改等内容.首先会介绍基础的数据库操作,然后以一个实例来进行讲解,这个实例会把一个数据表读取到winform上,然后在winform上有一些按钮和文本框,通过这些实现对数据库里的内容的增删改的操作.我个人比较菜,因此记录计较详细,说话也啰嗦,因此可能会写几篇才能介绍完. 本人属菜鸟一枚,刚接触.net两个星期,写的东西也是照搬自己看的视频里老师教的东西,其目的主要是为了巩固自己学习,当然,如果正好能帮助到和我一样的刚

kubernetes traefik配置https实践操作记录

1.参考文档 http://traefik.cn/ 2.访问方式简易说明 参考文档https://tonybai.com/2018/06/25/the-kubernetes-ingress-practice-for-https-service/ 前面一篇:traefik基础部署记录,介绍了最简单的http访问traefik,访问过程参考见下: client --- (via http) ---> traefik ---- (via http) ----> services 现在要实践的是更安全

Python语言-selenium webdriver操作记录汇总

1.控制浏览器大小 set_window_size() 设置浏览器大小 该方法有两个参数,第一个参数是宽,第二个是高 maximize_window() 设置浏览器全屏显示,无参数 chrome谷歌浏览器在控制浏览器大小时,报错 : unknown error: cannot get automation extension 解决办法:将chrome的webdriver驱动更新到最新的 参考网上:http://blog.csdn.net/lj2tj/article/details/5308234