jStat

jstat命令查看jvm的GC情况

社会主义新天地 提交于 2019-11-27 03:37:26
jstat命令查看jvm的GC情况 (以Linux为例) jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 注意!!!:使用的jdk版本是jdk8. 类加载统计:   Loaded: 加载class的数量 Bytes: 所占用空间大小 Unloaded: 未加载数量 Bytes: 未加载占用空间 Time: 时间 编译统计   Compiled: 编译数量。 Failed: 失败数量 Invalid: 不可用数量 Time: 时间 FailedType: 失败类型 FailedMethod: 失败的方法 垃圾回收统计   S0C: 第一个幸存区的大小 S1C: 第二个幸存区的大小 S0U: 第一个幸存区的使用大小 S1U: 第二个幸存区的使用大小 EC: 伊甸园区的大小 EU: 伊甸园区的使用大小 OC: 老年代大小 OU: 老年代使用大小 MC: 方法区大小 MU: 方法区使用大小 CCSC: 压缩类空间大小 CCSU: 压缩类空间使用大小 YGC: 年轻代垃圾回收次数 YGCT: 年轻代垃圾回收消耗时间 FGC: 老年代垃圾回收次数 FGCT: 老年代垃圾回收消耗时间 GCT: 垃圾回收消耗总时间 堆内存统计   NGCMN: 新生代最小容量 NGCMX: 新生代最大容量

jstat命令并获取JVM运行信息

╄→гoц情女王★ 提交于 2019-11-27 03:18:03
jstat命令并获取JVM运行信息 先来了解一下java.lang.management包的基本信息,提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 下面代码就是使用了该软件包的类,获取当前运行的java程序的pid,然后运行jstat命令获取jvm的运行信息, package com.usoft.sort; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.management.ManagementFactory; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by xinxingegeya on 16/4/12. */ public class JstatMain { /** * S0 — Heap上的 Survivor space 0 区已使用空间的百分比 * S1 — Heap上的 Survivor space 1 区已使用空间的百分比 * E — Heap上的 Eden space

Java之JVM监控工具分享

我怕爱的太早我们不能终老 提交于 2019-11-26 22:17:57
Java之JVM监控工具分享 JVM的基本知识常用的也就是 类加载机制 , 内存区域、分配、OOM , GC , JVM参数调优 几个链接自己看: 内存区域&类加载机制 分配策略&垃圾回收算法、收集器 今天结合代码讲一讲常用的java自带工具讲解,这些命令一般都是jdk/lib/tools.jar中。用来监控诊断我们的Java环境。 官方说明: https://docs.oracle.com/en/java/javase/11/tools/ 1. jps 显示当前用户的所有java进程的PID 以及主类名 jps : 显示当前用户的所有java进程的PID 以及主类名 jps -v : 打印传递给 Java 虚拟机的参数(如-XX:+UnlockExperimentalVMOptions -XX:+UseZGC) jps -m : 打印传递给主类的参数 jps -l : 打印模块名以及包名 默认开启(UsePerfData),若加上-XX:-UsePerfData 则无法找到进程。 2. jstack 功能 jstack不仅会打印 线程 的栈轨迹、线程状态(BLOCKED)、持有的锁(locked…)以及正在请求的锁(waiting to lock …),而且还会分析出具体的 死锁 。 jstack pid : 查看线程情况 jstack -F pid : 正常输出不被响应时

[总结]-第四章 虚拟机性能监控与故障处理工具

雨燕双飞 提交于 2019-11-26 18:18:16
[总结]-第四章 虚拟机性能监控与故障处理工具 进入JDK安装目录 cd $JAVA_HOME/bin ls 输出 appletviewer javah jjs jvisualvm schemagen extcheck javap jmap keytool serialver idlj javapackager jmc native2ascii servertool jar jcmd jps orbd tnameserv jarsigner jconsole jrunscript pack200 unpack200 java jdb jsadebugd policytool wsgen javac jdeps jstack rmic wsimport javadoc jhat jstat rmid xjc javafxpackager jinfo jstatd rmiregistry 工具命令 名称 主要作用 jps JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 jstat JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据 jinfo Configuration Info for Java,显示虚拟机配置信息 jmap Memory Map for Java

GC overhead limt exceed 导致的java进程假死

我们两清 提交于 2019-11-26 10:56:35
1.现象 线上后台任务的java进程处于假死状态 2.排查过程 1.查看假死的进程ID ps -ef | grep sku 2.将该进程的所有线程信息打印输出至指定文件 jstack -F 8843 >> jstack-8843.log 3.查看该日志文件前500行的信息 head -n 500 jstack-8843.log No deadlocks found,代表没有发现死锁,所有的线程都处于BLOCKED状态 4.查看GC的情况,每隔2s打印一次,一共打印20次 jstat -gc 8843 2000 20 发现gc的次数在疯狂增长,其次在该进程业务日志中发现java.lang.OutOfMemoryError: GC overhead limit exceeded GC overhead limt exceed检查是Hotspot VM 1.6定义的一个策略,通过统计GC时间来预测是否要OOM了,提前抛出异常,防止OOM发生。Sun 官方对此的定义是:“并行/并发回收器在GC回收时间过长时会抛出OutOfMemroyError。过长的定义是,超过98%的时间用来做GC并且回收了不到2%的堆内存。用来避免内存过小造成应用不能正常工作。“ 3.结论 基本可以判断为程序的内存设置过小,导致频繁GC,引起假死,调整 -Xms -Xmx 即可 来源: oschina 链接: