jStat

jstat的用法

 ̄綄美尐妖づ 提交于 2019-12-07 15:08:57
jstat的用法 用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到 java 应用程序。 Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。由于JVM内存设置较大,图中百分比变化不太明显 一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。 执行:cd $JAVA_HOME/bin中执行jstat,注意jstat后一定要跟参数。 语法结构: Usage: jstat -help|-options jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] 参数解释: Options — 选项,我们一般使用 -gcutil 查看gc情况

jstat的用法【待删】

岁酱吖の 提交于 2019-12-07 15:08:44
jstat的用法 用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到 java 应用程序。 Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。由于JVM内存设置较大,图中百分比变化不太明显 一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。 执行:cd $JAVA_HOME/bin中执行jstat,注意jstat后一定要跟参数。 语法结构: Usage: jstat -help|-options jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] 参数解释: Options — 选项,我们一般使用 -gcutil 查看gc情况

linux jstat 监控 java GC,Jstat是轻量级的、专门针对JVM的工具,非常适用

不想你离开。 提交于 2019-12-07 14:47:02
况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。 语法结构 jstat命令命令格式: jstat [Options] vmid [interval] [count] 参数说明: Options — 选项,我们一般使用 -gcutil 查看gc情况 vmid — VM的进程号,即当前运行的java进程号 interval– 间隔时间,单位为秒或者毫秒 count — 打印次数,如果缺省则打印无数次 示例: 1、jstat -gc pid   可以显示gc的信息,查看gc的次数,及时间。   其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。    2、jstat -gccapacity pid   可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,   如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,   PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。   其他的可以根据这个类推, OC是old内纯的占用量。 3、jstat -gcutil pid   统计gc信息统计。 4、jstat -gcnew pid   年轻代对象的信息。 5、jstat -gcnewcapacity pid  

jstat命令详解

浪子不回头ぞ 提交于 2019-12-07 00:36:42
Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的 命令 行的监控,包括了对Heap size和垃圾回收状况的监控。 jstat的用法: jstat [ generalOption, outputOptions vmid, [ interva,count ] 参数: generalOption: 一般使用-gcutil查看GC情况 vmid: 虚拟机进程号,即当前运行的java进程号 interval: 间隔时间,单位为秒或毫秒 count: 打印次数,如果缺省则打印无数次 1、查询GC总体使用情况 jstat -gcutil 23484 1000 5 结果说明: S0: 新生代中Survivor space 0区已使用空间的百分比 S1: 新生代中Survivor space 1区已使用空间的百分比 E: 新生代已使用空间的百分比 O: 老年代已使用空间的百分比 M:元数据区使用比例 CCS:压缩使用比例 YGC: 从应用程序启动到当前,发生Yang GC 的次数 YGCT: 从应用程序启动到当前,Yang GC所用的时间【单位秒】 FGC: 从应用程序启动到当前,发生Full GC的次数

jstat命令详解

穿精又带淫゛_ 提交于 2019-12-06 16:12:22
Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的 命令 行的监控,包括了对Heap size和垃圾回收状况的监控。 jstat的用法: jstat [ generalOption, outputOptions vmid, [ interva,count ] 参数: generalOption: 一般使用-gcutil查看GC情况 vmid: 虚拟机进程号,即当前运行的java进程号 interval: 间隔时间,单位为秒或毫秒 count: 打印次数,如果缺省则打印无数次 1、查询GC总体使用情况 jstat -gcutil 23484 1000 5 结果说明: S0: 新生代中Survivor space 0区已使用空间的百分比 S1: 新生代中Survivor space 1区已使用空间的百分比 E: 新生代已使用空间的百分比 O: 老年代已使用空间的百分比 M:元数据区使用比例 CCS:压缩使用比例 YGC: 从应用程序启动到当前,发生Yang GC 的次数 YGCT: 从应用程序启动到当前,Yang GC所用的时间【单位秒】 FGC: 从应用程序启动到当前,发生Full GC的次数

JVM运行参数

可紊 提交于 2019-12-06 13:50:41
一、三种参数类型     1、标准参数:比较稳定,以后版本会保留       -help       -version    2、-X参数(非标准参数)       -Xint       -Xcomp    3、-XX参数(非标准参数,使用率较高)       -XX:newSize       -XX:+UseSerialGC 二、标准参数    一般都是很稳定的,在未来jvm版本中不会改变,可以使用java -help检索出所有的标准参数。 三、-X参数    非标准选项,如有更改,恕不另行通知。    使用java -X检索出-X的参数。     -Xint,-Xcomp,-Xmixed      -Xint会强制JVM执行所有的字节码,会降低运行速度,通常低10倍或更多。     -Xcomp与-Xint相反,会把所有的字节码编译成本地代码。     -Xmixed是混合模式,是JVM的默认模式,推荐。 四、-XX参数    主要用于JVM的调优和debug操作。有两种,boolean类型和非boolean类型。     boolean类型     格式:-XX:[+-]<name> 表示启用或禁用<name>属性。     如:-XX:+DisableExplicitGC 表示禁止用手动调用gc操作,也就是System.gc()无效。     非boolean类型   

【转】90%的人会遇到性能问题,如何用1行代码快速定位

白昼怎懂夜的黑 提交于 2019-12-06 09:40:28
90%的人会遇到性能问题,如何用1行代码快速定位? 原创: 齐光 阿里技术 阿里妹导读:在 《如何回答性能优化的问题,才能打动阿里面试官? 》 中,主要是介绍了应用常见性能瓶颈点的分布,及如何初判若干指标是否出现了异常。 今天,齐光将会基于之前列举的众多指标,给出一些常见的调优分析思路,即:如何在众多异常性能指标中,找出最核心的那一个,进而定位性能瓶颈点,最后进行性能调优。整篇文章会按照代码、CPU、内存、网络、磁盘等方向进行组织,针对对某一各优化点,会有系统的「套路」总结,便于思路的迁移实践。 1. 代码相关 遇到性能问题,首先应该做的是检查否与业务代码相关——不是通过阅读代码解决问题,而是通过日志或代码,排除掉一些与业务代码相关的低级错误。 性能优化的最佳位置,是应用内部。 譬如,查看业务日志,检查日志内容里是否有大量的报错产生,应用层、框架层的一些性能问题,大多数都能从日志里找到端倪(日志级别设置不合理,导致线上疯狂打日志);再者,检查代码的主要逻辑,如 for 循环的不合理使用、NPE、正则表达式、数学计算等常见的一些问题,都可以通过简单地修改代码修复问题。 别动辄就把性能优化和缓存、异步化、JVM 调优等名词挂钩,复杂问题可能会有简单解,「二八原则」在性能优化的领域里里依然有效 。当然了,了解一些基本的「代码常用踩坑点」,可以加速我们问题分析思路的过程,从 CPU、内存

Windows Server 2008 and jstatd as a service

戏子无情 提交于 2019-12-05 10:13:57
I have a JBoss server installed as a service on Windows Server 2008 with Local System as the Log On user. I want to be able to run visualgc on the JBoss server, and prior to Server 2008 I was able to directly connect to the PID (i.e. visualgc [PID]). Based on what I've read, my only solution in Server 2008 is to install jstatd as a service using the same credentials in order to run visualgc remotely (i.e. visualgc [PID]@localhost:1099). So, I got jstatd running as a service under the Local System account (granted AllPermissions in policy file and set the java.io.tmpdir since it had problems

系统运行缓慢,CPU 100%,以及Full GC次数过多的排查思路

爱⌒轻易说出口 提交于 2019-12-04 18:49:29
通过top命令查看CPU情况,如果CPU比较高,则通过top -Hp <pid>命令查看当前进程的各个线程运行情况,找出CPU过高的线程之后,将其线程id转换为十六进制的表现形式,然后在jstack日志中查看该线程主要在进行的工作。这里有两种情况: 如果该现场为用户线程,则通过该线程的堆栈信息查看其具体是在哪处用户代码比较消耗cpu 如果该线程为vm thread,则通过jstat -gcutil <pid> <period> <times>命令监控当前系统的GC状况,然后通过jmap dump:format=b,file=<filepath> <pid>导出系统当前的内存数据。导出之后将内存情况放到eclipse的mat工具中分析即可得出内存中什么对象比较消耗内存,进而可以处理相关代码。 top命令看到CPU并不高,并且系统内存占用率也比较低。此时可以考虑是否由于另外三种情况导致。 如果是接口调用比较耗时,并且不定时出现,则可以通过压测方式加大阻塞点出现的频率,从而通过jstack查看堆栈信息,找到阻塞点 如果某功能突然出现停滞,情况无法复现,可以通过多次导出jstack日志的方式比对哪些用户线程一直处于等待状态,这些线程就是可能存在问题的线程 如果通过jstack可以查看到死锁,则可以检查死锁的两个线程的具体阻塞点,从而处理相应问题 来源: oschina 链接: https:

记一次调优过程

我怕爱的太早我们不能终老 提交于 2019-12-04 15:54:35
GC策略 & jconsole远程:增加jmx启动配置 /data/app/jdk1.8.0_151/bin/java -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=7018 -Dcom.sun.management.jmxremote.rmi.port=7019 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar ./bussiness-0.0.1-SNAPSHOT.jar -Xms2048m -Xmx2048m -Xmn1024g -Xss2m -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=3 -XX:+UseParNewGC -XX:+PrintGCDetails -XX: