【死磕JVM】用Arthas排查JVM内存 真爽!我从小用到大

Arthas是啥

当我们系统遇到JVM或者内存溢出等问题的时候,如何对我们的程序进行有效的监控和排查,就发现了几个比较常用的工具,比如JDK自带的 jconsole、jvisualvm 还有一个最好用的工具—— jprofiler ,但是这个是收费的,或者除了很有钱的公司,一般很少人会用这个,还有一个就是我们今天的主角—— Arthas ,为什么今天会重点讲这个呢?

官网地址: arthas

GitHub地址: GitHub - alibaba/arthas: Alibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas

Arthas 是Alibaba开源的Java诊断工具,采用命令行交互模式,提供了较为丰富的功能,主要还是他是免费里面的算是好用且功能比较强大的一个JVM排查的插件,在了解这个利器之后,发现还是挺好用的,而且支持的功能也比较全面,那么Arthas到底可以为我们做哪些事情呢?

  1. 提供性能看板,包括线程、cpu、内存等信息,并且会定时的刷新。
  2. 根据各种条件查看线程快照。找出cpu占用率最高的n个线程
  3. 输出jvm的各种信息,如gc算法、jdk版本、ClassPath等
  4. 遇到问题无法在线上 debug,热部署加日志直接替换
  5. 查看某个类的静态属性,也可以通过ognl语法执行一些语句
  6. 查看已加载的类的详细信息,这个类从哪个jar包加载的,查看类的方法的信息
  7. dump 类的字节码到指定目录
  8. 直接反编译指定的类
  9. 快速定位应用的热点,生成火焰图
  10. 可以监控到JVM的实时运行状态

以前,你碰到这些问题,解决的办法大多是,修改代码,重新上线。但是在大公司里,上线的流程是非常繁琐的,如果为了多加一行日志而重新发布版本,无疑是非常折腾人的。但是阿里巴巴开源的Arthas

有了更为优雅的线上调试方法。

Arthas 支持JDK6,同时可以在 Linux/Mac/Windows 上运行,自动Tab 补全功能,更方便我们定位问题和诊断

下载地址: https://arthas.gitee.io/download.html

你可以下载zip的包我下载的是arthas-packaging-3.5.0-bin.zip

或者通过命令去下载

wget https://alibaba.github.io/arthas/arthas-boot.jar

使用手册

1. 快速启动

当我们下载好之后,我们直接通过命令启动就可以 java -jar arthas-boot.jar ,但是在此之前我们需要通过检测的代码来挂靠到Arthas上面

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class FullGCTest {


    //模拟银行卡的类
    private static class CardInfo {
        //小农的银行卡信息记录
        BigDecimal price = new BigDecimal(10000000.0);
        String name = "牧小农";
        int age = 18;
        Date birthdate = new Date();

        public void m() {}
    }

    //线程池 定时线程池
    //50个,然后设置 拒绝策略
    private static ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(50,
            new ThreadPoolExecutor.DiscardOldestPolicy());

    public static void
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值