jStat

What's the meaning of “CGC” and “CGCT” in JDK11 “jstat -gc <PID>”?

若如初见. 提交于 2021-02-19 01:33:13
问题 There are two items called CGC and CGCT. I cannot found the documention and man page describing their meaning. # jstat -gc 139934 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT CGC CGCT GCT 0.0 15360.0 0.0 15360.0 113664.0 9216.0 88064.0 23552.0 82304.0 80084.2 10112.0 9360.4 10 0.157 0 0.000 6 0.018 0.175 # java -version openjdk version "11.0.2" 2019-01-15 LTS OpenJDK Runtime Environment Corretto-11.0.2.9.3 (build 11.0.2+9-LTS) OpenJDK 64-Bit Server VM Corretto-11.0.2.9.3

Java进阶训练营

安稳与你 提交于 2021-02-15 17:11:30
Java进阶训练营 \/ itspcool 一起交流学习 案例分析 学习组合使用多种 JVM 工具,详细了解 JVM 的内部运行状态。 对运行中的 JVM 进行堆内存、线程、CPU、GC 和死锁情况进行分析。 通过动态运行数据,分析热点类和方法,查找性能瓶颈。 核心要点 使用 jstat/jmap/jstack 等命令,JConsole/JVisualVM/JMC 等可视化工具剖析 JVM 性能。 分析 JVM 的堆内存、线程、类加载、CPU 使用情况,诊断 JVM GC 情况,检测死锁。 使用飞行记录器,分析一段时间内的 JVM 运行状态,分析热点方法和性能瓶颈。 一、 JAVA。要想成为JAVA(高级)工程师肯定要学习JAVA。一般的程序员或许只需知道一些JAVA的语法结构就可以应付了。但要成为JAVA(高级) 工程师,您要对JAVA做比较深入的研究。您应该多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程。如果可能,希望您 对JAVA的所有包都浏览一下,知道大概的API,这样您就发现其实您想实现的很多功能,通过JAVA的API都可以实现了,就不必自己费太多的脑经 了。 二、 设计模式。其实写代码是很容易的事情,我相信您也有同感。但如何写得好就比较难了。这个“好”字包括代码可重用性,可维护性,可扩展性等。如何写出好的代 码往往要借助一些设计模式

Full GC in G1 GC

独自空忆成欢 提交于 2021-02-11 06:43:35
问题 Jstat tool gives stats regarding young gc time and full gc time along with other information. As far as I know, Full GC in G1 GC consists of following phases : 1) Concurrent Marking (not Stop the world) 2) Remarking (Stop the world) 3) Reclaimation of empty regions (Stop the world) 4) Reclaimation of partially empty old regions through mixed gc (Happens over the time) Now, I want to know jstat full gc time measures time for which of the phases ? If Phase 1 and 2 are not considered for full gc

Java程序性能监控工具

﹥>﹥吖頭↗ 提交于 2021-02-10 02:27:35
系统性能监控: 确定系统运行的整体状态,基本定位问题所在 uptime 命令 [root@localhost ~]# uptime 23:19:38 up 244 days, 3:39, 34 users, load average: 7.36, 7.81, 7.79 ps,获取服务器有多少逻辑核心:grep 'model name' /proc/cpuinfo | wc -l,一般情况下load average除以逻辑核心数 < 0.7 认为CPU压力不大 系统时间 时间从开机到现在的运行时间 连接数:每一个终端算一个连接 1,5,15分钟内的系统平均负载:运行队列中的平均进程数。 top命令 第一行同uptime CPU、内存情况 每个进程占CPU的情况 可以知道哪个程序占用CPU最多 vmstat命令 可以统计系统的CPU,内存,swap,io等情况 CPU占用率很高,上下文切换频繁、说明系统中有线程正在频繁切换。 vmstat 1 4 指定采样频率和采样次数,每1秒采集1次,采集4次 [root@localhost ~]# vmstat 1 4 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi

JVM性能监控工具(一)-jdk命令行工具

人走茶凉 提交于 2021-02-09 20:03:52
转载:http://blog.csdn.net/top_code/article/details/51456186 当系统出bug需要定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里所说的数据包括:运行日志,异常堆栈,GC日志,线程快照(threaddump/javacore文件),堆转储快照(heapdump/hprof文件)等。使用适当的虚拟机监控和分析工具可以加快我们分析数据、定位问题的速度。 JDK的命令行工具 JDK本身提供了很多方便的JVM性能监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat等小巧的工具。它们在JDK的bin目录之下: 1.jps 说明 jps(JVM Process Status Tool)用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。 命令格式 > jps [options] [hostid] 1 jps常用options如下表: 选项 作用 -q 只输出LVMID,省略主类的名称 -m 输出虚拟机进程启动时传递给主类main()函数的参数 -l 输出主类的全名,如果进程执行的是jar,输出jar路径 -v 输出虚拟机进程启动时JVM参数 示例 > jps -l 1 2.jstat 说明 jstat(JVM

jstat命令

天大地大妈咪最大 提交于 2021-02-09 08:59:00
Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对 Heap size和垃圾回收状况的监控 。 语法结构: Usage: jstat -help|-options jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] 参数解释: Options — 选项,我们一般使用 -gcutil 查看gc情况 vmid — VM的进程号,即当前运行的java进程号 interval– 间隔时间,单位为秒或者毫秒 count — 打印次数,如果缺省则打印无数次 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

Java Monitoring&Troubleshooting Tools

半世苍凉 提交于 2021-02-08 21:55:48
JDK Tools and Utilities Monitoring Tools You can use the following tools to monitor JVM performance statistics. The tools described in this section are unsupported and experimental, and should be used with that in mind. <font color='red'> They may not be available in future JDK versions </font>. These tools are supported on all platforms except Windows 98 and Windows ME. Tool Name Brief Description <font color='blue'>jps Experimental: JVM Process Status Tool - Lists instrumented HotSpot Java virtual machines on a target system. <font color='blue'>jstat Experimental: JVM Statistics Monitoring

后浪,谈谈你对jvm性能调优的理解

人走茶凉 提交于 2021-01-27 09:47:01
在我们日常的研发工作中, 经常会遇到系统的性能问题,这时我们必须进行系统的性能调优。系统调优分好多种,比如架构和代码优化、jvm调优、操作系统调优、数据库调优、tomcat调优、网络调优等。架构和代码优化是效率最高的调优手段,但是并不能解决所有的性能问题。今天我们要回顾的是一个老生常谈的话题,jvm调优。 本文主要包括以下内容 Java内存模型回顾 什么时候需要JVM调优 常见的OOM异常及案例 JVM自带监控工具 JVM常用调优参数 JVM第三方监控工具 调优案例 Java内存模型回顾 首先,我们以HotSpot回顾一下JVM的内存模型,见下图: HotSpot内存模型分为3个部分: 类加载器 类加载器用于加载java编译后的.class文件,提取其中的类信息以某种数据结构存放在方法区。 运行时数据区 线程栈和本地方法栈用于存放线程运行时方法调用等相关信息,程序计数器记录字节码指令在主内存中的地址,这3个模块都是线程私有的。 堆中存放程序运行时创建的对象。 对于jvm规范中的方法区,java8以前,HotSpot对方法区的实现是在永久代。从java7开始,HotSpot开始移除永久代,符号引用迁移到native heap,字面量和类静态变量移动到java堆。Java8中HotSpot彻底废弃了永久代,用元空间来取代永久代实现jvm规范中的方法区。元空间用来专门存储类的元数据

每日一面

做~自己de王妃 提交于 2021-01-17 10:00:33
定时进入 SafePoint :每经过-XX:GuaranteedSafepointInterval 配置的时间,都会让所有线程进入 Safepoint,一旦所有线程都进入,立刻从 Safepoint 恢复。这个定时主要是为了一些没必要立刻 Stop the world 的任务执行,可以设置-XX:GuaranteedSafepointInterval=0关闭这个定时,我推荐是关闭。 由于 jstack,jmap 和 jstat 等命令,也就是 Signal Dispatcher 线程要处理的大部分命令 ,都会导致 Stop the world:这种命令都需要采集堆栈信息,所以需要所有线程进入 Safepoint 并暂停。 偏向锁取消 (这个不一定会引发整体的 Stop the world,参考JEP 312: Thread-Local Handshakes):Java 认为,锁大部分情况是没有竞争的(某个同步块大多数情况都不会出现多线程同时竞争锁),所以可以通过偏向来提高性能。即在无竞争时,之前获得锁的线程再次获得锁时,会判断是否偏向锁指向我,那么该线程将不用再次获得锁,直接就可以进入同步块。但是高并发的情况下,偏向锁会经常失效,导致需要取消偏向锁,取消偏向锁的时候,需要 Stop the world,因为要获取每个线程使用锁的状态以及运行状态。 Java Instrument