源码角度了解Skywalking之Skywalking是如何进行JVM监控的

源码角度了解Skywalking之Skywalking是如何进行JVM监控的

大家都知道Skywalking可以监控Java的JVM情况,包括垃圾回收情况等等,那么它是怎么实现的呢?今天就带大家一探究竟。

通过前几篇的文章我们知道,Skywalking启动的时候,会加载各种BootService实现类,而有关JVM的BootService实现类就是JVMService

JVMService

JVMService可以看做一个定时器,它收集JVM cpu、内存、内存池和gc 信息等等参数,并将收集到的信息通过GRPCChannelManager提供的通道发送给Collector,GRPCChannelManager这个类我们在上篇文章我们就进行了介绍,主要是用来建立连接管理通道的

JVMService实现BootService接口和Runnable接口

我们按照调用方法的顺序分析一下吧

prepare()方法

JVMService的prepare()方法:

public static int BUFFER_SIZE = 60 * 10;
public void prepare() throws Throwable {
        queue = new LinkedBlockingQueue<JVMMetric>(Config.Jvm.BUFFER_SIZE);
        sender = new Sender();
        ServiceManager.INSTANCE.findService(GRPCChannelManager.class).addChannelListener(sender);
    }
复制代码

准备阶段就是创建一个LinkedBlockingQueue类型的阻塞队列,队列大小为600,这个队列保存的是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值