沉淀、分享、成长,让自己和他人都能有所收获
-
基于JavaAgent的全链路监控四《JVM内存与GC信息》
除了监控java方法的执行耗时,我们还需要获取应用实例的jvm内存与gc信息,以实时把控我们的服务器性能是否在安全范围。监控jvm内存与gc信息是非常重要的,尤其是在大促以及微博火热爆点的时候,我们需要根据监控信息进行扩容,以保证系统稳定。
-
基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》
在第二章中我们已经可以监控方法执行耗时,虽然它能完成我们一些基本需要,但是为了增强代码的扩展性,我们需要使用字节码操作工具ByteBuddy来帮助我们实现更完善的监控程序。
-
基于JavaAgent的全链路监控二《通过字节码增加监控执行耗时》
通过上一章节的介绍《嗨!JavaAgent》,我们已经知道通过配置-javaagent:文件.jar后,在java程序启动时候会执行premain方法。接下来我们使用javassist字节码增强的方式,来监控方法程序的执行耗时。
-
基于JavaAgent的全链路监控一《嗨!JavaAgent》
全链路监控又名分布式监控系统全链路追踪,目前市面的全链路监控系统基本都是参考Google的[Dapper](https://mp.weixin.qq.com/s?__biz=MzIxMDAwMDAxMw==&mid=2650724660&idx=1&sn=0f33d3386c7652bf536cb071e9f79921&chksm=8f6138d6b816b1c0d92fb75257da4fc8ddefb7ec53dfcad98dffec87740df455cc75aa7b4a5c&token=144816615&lang=zh_CN#rd)(大规模分布式系统的跟踪系统)来做的。例如;蚂蚁金服分布式链路跟踪组件SOFATracer、Gokit微服务-服务链路追踪 、Pinpoint、Prometheus(普罗米修斯)等等。
-
用Java实现JVM第十章《异常处理》
案例介绍 异常处理是java语言非常重要的一个语法,本章主要实现如何处理抛出的异常。
-
用Java实现JVM第九章《本地方法调用》
案例介绍 本章主要介绍用java实现一些本地方法类库,并初始化本地方法,之后通过反射命令来调用本地方法。
-
用Java实现JVM第八章《数组和字符串》
案例介绍 本章主要介绍如何实现让虚拟机处理数组和字符串,在虚拟机功能增强后,我们可以执行数组类型计算和输出字符串。本章需要新增实现数组指令;newarray、anewarray、arraylength、aload、astore、multianewarray、ldc,同时需要需要开发字符串池方法等。
-
用Java实现JVM第七章《方法调用和返回》
案例介绍 本章节主要用java实现;方法调用指令、返回指令、解析方法符号引用、参数传递等。实现新的指令后我们的虚拟机就可以执行稍微复杂的运算并输出结果。
-
用Java实现JVM第六章《类和对象》
案例介绍 本案例通过java代码实现jvm规范中指令集和解释器,完成后就可以开始执行1到100的加和计算。
-
用Java实现JVM第五章《指令集和解释器》
案例介绍 本案例通过java代码实现jvm规范中指令集和解释器,完成后就可以开始执行1到100的加和计算。
-
用Java实现JVM第四章《运行时数据区》
-
用Java实现JVM第三章《解析class文件》附[classReader拆解]
案例介绍 按照如下虚拟机规范,本文主要介绍java版本jvm提取class字节码方式。在java中没有无符号类型,例如js中byte取值是0~256、java中是-128 ~ +127,所以在实际处理字节码时[虚拟机规范u1、u2、u4],需要进行转换。
(转载本站文章请注明作者和出处 微信公众号:bugstack虫洞栈 | 作者:小傅哥)