ITPub博客

首页 > 应用开发 > Java > 好程序员Java培训分享Java性能常见命令有哪些

好程序员Java培训分享Java性能常见命令有哪些

原创 Java 作者:好程序员 时间:2020-07-13 15:59:50 0 删除 编辑

  好程序员Java 培训分享 Java 性能常见命令有哪些 性能优化一向是后端服务优化的重点,但是线上性能故障问题不是经常出现,或者受限于业务产品,根本就没办法出现性能问题,包括笔者自己遇到的性能问题也不多,所以为了提前储备知识,当出现问题的时候不会手忙脚乱。

   既然是定位问题,肯定是需要借助工具,我们先了解下需要哪些工具可以帮忙定位问题。

   top 命令

   top 命令是我们最常用的 Linux 命令之一,它可以实时的显示当前正在执行的进程的 CPU 使用率,内存使用率等系统信息。 top -Hp pid 可以查看线程的系统资源使用情况。

   vmstat 命令

   vmstat 是一个指定周期和采集次数的虚拟内存检测工具,可以统计内存, CPU swap 的使用情况,它还有一个重要的常用功能,用来观察进程的上下文切换。字段说明如下 :

   r: 运行队列中进程数量 ( 当数量大于 CPU 核数表示有阻塞的线程 )

   b: 等待 IO 的进程数量

   swpd: 使用虚拟内存大小

   free: 空闲物理内存大小

   buff: 用作缓冲的内存大小 ( 内存和硬盘的缓冲区 )

   cache: 用作缓存的内存大小 (CPU 和内存之间的缓冲区 )

   si: 每秒从交换区写到内存的大小,由磁盘调入内存

   so: 每秒写入交换区的内存大小,由内存调入磁盘

   bi: 每秒读取的块数

   bo: 每秒写入的块数

   in: 每秒中断数,包括时钟中断。

   cs: 每秒上下文切换数。

   us: 用户进程执行时间百分比 (user time)

   sy: 内核系统进程执行时间百分比 (system time)

   wa: IO 等待时间百分比

   id: 空闲时间百分比

   pidstat 命令

   pidstat Sysstat 中的一个组件,也是一款功能强大的性能监测工具, top vmstat 两个命令都是监测进程的内存、 CPU 以及 I/O 使用情况,而 pidstat 命令可以检测到线程级别的。 pidstat 命令线程切换字段说明如下:

   UID :被监控任务的真实用户 ID

   TGID :线程组 ID

   TID :线程 ID

   cswch/s :主动切换上下文次数,这里是因为资源阻塞而切换线程,比如锁等待等情况。

   nvcswch/s :被动切换上下文次数,这里指 CPU 调度切换了线程。

   jstack 命令

   jstack JDK 工具命令,它是一种线程堆栈分析工具,最常用的功能就是使用 jstack pid 命令查看线程的堆栈信息,也经常用来排除死锁情况。

   jstat 命令

   它可以检测Java 程序运行的实时情况,包括堆内存信息和垃圾回收信息,我们常常用来查看程序垃圾回收情况。常用的命令是 jstat -gc pid 。信息字段说明如下:

   S0C :年轻代中 To Survivor 的容量 ( 单位 KB);

   S1C :年轻代中 From Survivor 的容量 ( 单位 KB);

   S0U :年轻代中 To Survivor 目前已使用空间 ( 单位 KB);

   S1U :年轻代中 From Survivor 目前已使用空间 ( 单位 KB);

   EC :年轻代中 Eden 的容量 ( 单位 KB);

   EU :年轻代中 Eden 目前已使用空间 ( 单位 KB);

   OC :老年代的容量 ( 单位 KB);

   OU :老年代目前已使用空间 ( 单位 KB);

   MC :元空间的容量 ( 单位 KB);

   MU :元空间目前已使用空间 ( 单位 KB);

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

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

   FGC :从应用程序启动到采样时 老年代 (Full Gc)gc 次数 ;

   FGCT :从应用程序启动到采样时 老年代代 (Full Gc)gc 所用时间 (s);

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

   jmap 命令

   jmap 也是 JDK 工具命令,他可以查看堆内存的初始化信息以及堆内存的使用情况,还可以生成 dump 文件来进行详细分析。查看堆内存情况命令 jmap -heap pid

   mat 内存工具

   MAT(Memory Analyzer Tool) 工具是 eclipse 的一个插件 (MAT 也可以单独使用 ) ,它分析大内存的 dump 文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用 OQL 对象查询,以及可以很方便的找出对象 GC Roots 的相关信息。

   idea 中也有这么一个插件,就是 JProfiler


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69913864/viewspace-2704174/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-20

  • 博文量
    342
  • 访问量
    154336