当前位置: 首页 > news >正文

java工具jconsole/jstat学习

参考视频【java】jvm指令与工具jstat/jstack/jmap/jconsole/jps/visualVM_哔哩哔哩_bilibili

一、jps

我们再windows和linux都可以看到哪些java进程。

 有小伙伴又会问了 这个类是java的 那其他的这么多进程18096 /8685 这些是啥啊 其实也是java进程,只不过是其他程序,比如idea。

 

二 、jconsole

由于是图形化界面更加清晰 其实jconsole = jstat+jstack

 点击test类,再点击连接,查看详细情况

/*** vmOptions* -Xms10m -Xmx10m* 最小    最大* -XX:HeapDumpOnOutOfMemoryError*/
public class TestJavaUtils {public static void main(String[] args) throws InterruptedException {int i=0;while (true){System.out.println("put success");Thread.sleep(1000);}}
}

 注意 要将vm options 设置为 -Xms10m -Xmx10m 否则基本看不到内存变化

 

 可以看到的最大值是9216=10M*1024*0.9 这个0.9就不多说了 有兴趣的自己百度。

这里还可以看到GC。

这个时候有小伙伴就会问了,我知道他GC了对我的工作有什么帮助呢? 我以前也有这个疑问,但是没人解答,这里我告诉你。

为什么我要你设置堆才10M。一半来说就都是1G 2G 甚至10G的内存。因为设置大了,你基本看不到GC,或者GC的时间很短

这里比如我才1分钟就有0.049s的GC时间了,而且我的代码非常简单,复杂10倍不过分吧,那就是0.5s的GC时间,一分钟有0.5s在GC那么是会影响你的正常程序的。例如这篇文章最后,就是GC时间太长CPU负载高,导致任务慢

hadoop中NameNode节点CPU使用量高 解决方案(亲测) - 爱码网

这时小伙伴又会说了 你再windows有图形界面,那我在服务器怎么看

三、jstat

参考文章 https://danny-jiang.blog.csdn.net/article/details/105804076

jstat 是JDK中提供的一个命令行工具,主要用来打印JVM 性能数据相关的统计数据。主要包含以下几个方面:

  • 垃圾回收(GC)方面数据

  • 编译(Compilation)相关数据

  • 类加载信息(Class Loader)

通过jps -l 找到 java的进程号 pid 然后

jstat -gcutil pid 10000 10  这个是看占的比例

jstat -gc pid 10000 10  这个看的是每个空间占的实际大小

jstat -gcnew  pid  只看年轻代

jstat -gcold  查看老年代 

参数解释:

-gc :打印相关的统计参数

-t:  在每行日志之前加上JVM的启动时间

pid : 目标Java进程的ID

10000: jstat命令执行间隔时间(milliseconds),10000表示每10s打印一行日志

10: jstat命令的执行次数,(和上面的时间间隔一起,表示jstat会每10s执行1次,总共执行10次). 可以不要

 这张图可以看到 E区伊甸园区数据不断增多,等到伊甸园区满了来个小GC,就把数据放到幸存者s0区,同时把S1区的数据放到老年代,这时算搞了一次YGC,多了快满的时候就会来个GC

等到老年代数据满了就会来一次OGC

 参数意义:

time :  JVM启动时间(单位为秒)

S0C :年轻代中S0区的容量 (字节)

S1C :年轻代中S1区的容量 (字节)

S0U :年轻代中S0区目前已使用空间 (字节)

S1U :年轻代中S1区目前已使用空间 (字节)

EC :年轻代中Eden区的容量 (字节)

EU :年轻代中Eden区目前已使用空间 (字节)

OC :老年代的容量 (字节)

OU :老年代目前已使用空间 (字节)

M : MetaspaceSize元空间

CCS : CompressedClassSpaceSize压缩类

YGC :从应用程序启动到采样时年轻代中GC次数

YGCT :从应用程序启动到采样时年轻代中GC所用时间(s)

FGC :从应用程序启动到采样时老年代(全GC)GC次数

FGCT :从应用程序启动到采样时老年代(全GC)GC所用时间(s)

GCT:从应用程序启动到采样时GC用的总时间(s)

这个用法在服务器上也是通用的。。。。通过查看GC次数和时间来检查某些服务是不是内存设置过小。

四、jstack

用法 jstack pid 

五、jmap

内存状态可以down下来

jmap -dump:file=filename pid 把内存状态down到本地

jmap -heap pid 打印内存信息

这里打印的比较人性化,其实和jstat差不多.

----后面有机会 找个案例来实战演练 

http://www.lryc.cn/news/26401.html

相关文章:

  • WSN_1 介绍;部分应用介绍
  • linux常用命令介绍 05 篇——实际应用篇(用 cut、uniq等统计文档里每个关键词出现的次数)
  • 大数据处理学习笔记1.7 Scala类与对象
  • Feign踩坑源码分析 -- 请求参数分号变逗号
  • nginx通用history模式刷新
  • Linux系统安装:Zookeeper
  • cocos2dx+lua学习笔记:UIPageView的使用
  • MyBatis常见面试题汇总(超详细回答)
  • Jvm调优实战笔记
  • JVM 全面了解
  • 阿里开源自研高性能核心搜索引擎 Havenask
  • nginx日志服务之敏感信息脱敏
  • 【uni-app教程】一、UniAPP 介绍
  • Splunk Real-time Search 的研究
  • SWM181 串口功能使用介绍
  • Stochastic Approximation 随机近似方法的详解之(三)Dvoretzky’s convergence theorem
  • 7个ES6解构技巧让代码更简洁
  • 曾经被人们看成是异想天开的产业互联网,或许终将会实现
  • log4j控制台不打印日志的故障解决方案
  • C# 序列化时“检测到循环引用”错误的彻底解决方案
  • 小红书“复刻”微信,微信“内造”小红书
  • 用arthas轻松排查线上问题
  • mysql一explain结果分析
  • 原理底层计划--HashMap
  • win10 设备管理器中的黄色感叹号(华硕)
  • 新产品上市推广不是“铺货”上架
  • MATLAB训练神经网络小结
  • 实战:一天开发一款内置游戏直播的国产版Discord应用【附源码】
  • 嵌入式学习笔记——基于Cortex-M的单片机介绍
  • Python 虚拟环境的使用