JVM工作原理与实战(二十九):监控内存泄漏的工具
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了解决内存溢出的步骤、Top命令、VisualVM、Arthas、Prometheus + Grafana等内容。
Arthas入门教程
Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱,是线上问题的排除的利器。下面我们对Arthas做个简单介绍。
Arthas 实战,助你解决同名类依赖冲突问题(下)
上篇文章『程序员需要了解依赖冲突的原因以及解决办法』中,阿粉分析 Maven 依赖冲突分为两类: 项目同一依赖应用,存在多版本,每个版本同一个类,可能存在差异。 项目不同依赖应用,存在包名,类名完全一样的类。 第二种情况,往往是这个场景,本地/测试环境运行的都是好好的,上线之后测试就是不行。这其实与 JVM 类加载有关,本地/测试环境加载正确类,而生产环境加载错的类,为什么会这样? 主要有两个原因: 同一个类只会被加载器加载一次 不同环境,类的加载顺序不同
配置 arthas 实现远程线上 debug
arthas 有多种启动方式:
java agent 像 skywalking 一样
as.sh 利用 arthas 的 shell 启动 或者 java -jar 启动
sprintboot starter 集成到应用中启动
我们采用最方便的把 arthas 集成到 springboot-starter 的应用中启动