享学堂-架构师网课笔记-JVM-L9+L10

GC 调优基础知识之工具篇

在实际的项目中GC存在很多的问题,例如高延时,高内存占用等这里结合之前的垃圾回收理论+工具去排除问题,解决实际生产问题,优化代码和运行参数。

jps

jps 常用的Java运行线程查看工具,查看当前运行的Java线程,确认目标项目是否部署成功等。比较常用的参数是-l 和 -v 一般在生产上如果有太多的程序在跑以查看路径。

  • jps -l 查看主类完整的package 名称和jar完整名称
  • jps -v 查看Java运行参数和具体路径

在这里插入图片描述

jstat

jstat 是查看GC的参数,一般用于排查服务的性能问题,可以看到上一次的GC发生的原因,是新生代还是老年代的空间满了,哪里频繁STW而导致了服务性能的下降。一般在生产环境的Linux是定位的首要工具。比较常用和重要的参数有:

  • -gccause (最近一次GC统计和原因)
  • -gcutil (GC统计汇总)
  • -gc (GC 堆状态)
    还有各种查看不同空间的大小。
    在这里插入图片描述
    我们试着写一段代码,写一个线程不断地往list中添加元素,等到新生代满了,就会触发youngGC,通过刷新两次的jstat就可以看到新生代空间的大小发生了变化。
@Override
    public void run() {
        try {
            while(true){
                if(list.size()*512/1024/1024>=990){
                    list.clear();
                    System.out.println("list is clear");
                }
                byte[] bl;
                for(int i=0;i<100;i++){
                    bl = new byte[512];
                    list.add(bl);
                }
                Thread.sleep(1);
            }

        } catch (Exception e) {
        }
    }
}

在这里插入图片描述

jinfo

查看和修改虚拟机的参数

  • jinfo –sysprops 可以查看由 System.getProperties()取得的参数
  • jinfo -flag 可以添加参数
    例如往使用命令 jinfo -flag +PrintGC,用来打印GC的参数,而且这个命令不需要重启虚拟机,这也是排查的一个重要方法。
    在这里插入图片描述
    在这里插入图片描述

Arthas

这是阿里巴巴封装好的一个查看命令进程的工具,它提供了一系列的封装好的工具用于排查JVM运行中的问题。
在这里插入图片描述

常用命令Dashboard

一般5s刷新一次,可以监控内存的回收情况和相关线程。
在这里插入图片描述

常用命令Thread

这个命令跟jstack相似,也是可以用来排查死锁。根据不同的参数可以查看线程的不同情况,例如加 -n,查看最忙的几条线程,加-b 查看阻塞的线程。
在这里插入图片描述

常用命令jad

反编译已加载类的代码,常用于生产上查看是否部署。

常用命令trace

trace 用来检测一个方法的执行时间,例如下面本地项目跑的一个方法可以看到这个方法里面调用了其他什么方法,并且返回的时间有多长,例如下面有一个数据库查询的就占用了时间。
在这里插入图片描述
monitor 每5秒检查一次
在这里插入图片描述

动态追踪底层实现

看了上面的arthas 看出来动态追踪技术是不用停止项目的进行追踪,但是它有点像spring的AOP功能。它是基于Java Attach API实现的。然后我觉得好像没啥卵用,,就不学了吧。。。哈哈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值