11.jvm第三方工具使用实践

目录

  • 概述
  • GCEasy
    • 官网
    • jvm内存占用情况
    • 关键性能指标
    • 堆内存与元空间优化
  • MAT
    • 安装
    • MAT相关概念说明
      • 内存泄漏与内存溢出
      • shallow heap及retained heap
      • outgoing references与incoming references
      • Dominator Tree
  • GCViewer
  • Arthas
    • 下载安装与启动
      • jdk8
      • jdk 11
      • jdk11自定义boot jar
      • jdk17
    • 常用命令
      • dashboard
      • 查看线程 thread
      • 反编译已加载类源码
  • 结束

概述

工具详解
GCEasy免费GC日志可视化分析Web工具
MAT:Memory Analyzer Tool可视化内存分析工具
GCViewer开源的GC日志分析工具
Arthas线上java程序诊断工具,功能非常强大

GCEasy

业界首先采用机器学习算法解决GC日志分析问题,GCeasy内置机器智能可以自动检测jvm和android GC日志中的问题,并推荐解决方案。

官网

地址

GC日志分析是免费的,Machine Learning 收费

  • 几秒内解决GC和内存问题
  • jvm堆优化建议
  • 机器学习

默认英文,切换语言成中文,上传日志文件,即可分析
在这里插入图片描述

jvm内存占用情况

关键性能指标

堆内存与元空间优化

MAT

MAT是一个强大的可视化内存分析工具,可以快捷、有效的帮助找到内存泄露、减少内存消耗的分析工具。MAT是(Memory Analyzer Tool) 的缩写,是一种快速,功能丰富的java堆分析工具。

功能:

  • 找到最大的对象,因为MAT提供显示合理的累积大小(retained size)
  • 探索对象图,包括inbound和outbound引用,即引用此对象的和此对象引出的
  • 查找无法回收的对象,可以计算从垃圾收集器根到相关对象的路径
  • 找到内存浪费,比如冗余的String对象、空集合对象

安装

MAT安装有两种方式,一种是以eclipse插件方式安装,一种是独立安装。

注意: 可能有bug,更新版本即可。

MAT download

在这里插入图片描述

MAT相关概念说明

内存泄漏与内存溢出

找到 jvm最大的对象,是解决内存泄漏与内存溢出关键点。

  • 内存泄露:对象是垃圾了,还存在被GCRoots引用的情况,无法被垃圾收集器回收
    • 解决方案:找出泄漏的代码位置和原因,具体问题具体解决
  • 内存溢出:内存中的对象非常多,堆空间 不足,就会出现。
    • 解决方案:检查堆大小设置是否合理,检查是否存在对象生命周期太长、持有状态时间太长的情况。

shallow heap及retained heap

  • shallow heap:对象本身占用内存的大小,也就是对象内存区域的总和。
  • retained heap:对象及对象引用链中所有对象的大小总和,如果一个对象被释放掉,因为该对象的释放而被释放的所有对象的大小。相对于shallow head,Retained heap可以更精确的反映一个对象实际占用的大小。

outgoing references与incoming references

  • outgoing references:表示该对象的出节点(被该对象引用的对象)。
  • incoming references:表示该对象的入节点(引用到该对象的对象)。

Dominator Tree

Dominator Tree 对象的支配树;帮助快速的发现占用内存最大的块,也能帮助分析对象的依赖关系。

GCViewer

GCViewer是一款开源的GC日志分析工具。项目的GitHub主页对各个指标提供了完整的描述信息,需要安装jdk才能使用。借助GCViewer日志分析工具,可以非常直观的分析出待调优点。

可从以下几方面来分析:

  • Memory:分析totalheap、Tenuredheap、Youngheap内存占用率及其它指标,理论上内存占用率越小越好
  • Pause:分析GC pause、FullGC pause、Total pause 三个大项中各指标,理论上GC次数越少越好,GC时长越小越好。

Arthas

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常、监测方法执行耗时,类加载信息等,大大提升线上问题的排查效率。

Arthas支持jdk1.6+,支持Linux、Mac、Windows,采用命令行交互模式,则是提供丰富的Tab自动补全功能,进一步方便进行问题的定位和诊断。

下载安装与启动

download

# 不行
/data/soft/jdk-17.0.9/bin/java -jar arthas-boot.jar
# 
/data/soft/jdk-11.0.20/bin/java -jar math-game.jar
/data/soft/jdk-11.0.20/bin/java -jar arthas-boot.jar

在这里插入图片描述
在这里插入图片描述

jdk8

没有问题

jdk 11

/data/soft/jdk-11.0.20/bin/java -jar math-game.jar
/data/soft/jdk-11.0.20/bin/java -jar arthas-boot.jar

在这里插入图片描述

在这里插入图片描述

jdk11自定义boot jar

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

jdk17

/data/soft/jdk-17.0.9/bin/java -jar math-game.jar
/data/soft/jdk-17.0.9/bin/java -jar arthas-boot.jar

在这里插入图片描述
在这里插入图片描述
自己写的jdk17的spring boot 不行。
在这里插入图片描述

常用命令

dashboard

展示当前进程的信息,按 ctrl+c 可以中断执行

dashboard

在这里插入图片描述

查看线程 thread

通过 thread 命令来获取到应用进程的线程信息。thread -1 会打印线程统计信息。

TIMED_WAITING(超时等待) 状态相当于在等待状态的基础上增加了超时限制。

thread -1

在这里插入图片描述

反编译已加载类源码

运行期通过jad来反编译项目代码。

jad com.fun.demo.controller.JMeterController

在这里插入图片描述

结束

jvm第三方工具使用实践 至此就结束了,如有疑问,欢迎评论区留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/249126.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PHPRunner 10.91 Crack

PHPRunner是一款非常好用的网页制作工具,界面简洁美观,支持处理多个数据库连接并添加设计页面,页面中可以显示不同的不相关对象,如网格,单个记录,图表,报告等。PHPRunner支持多个操作系统&#…

OxLint 发布了,Eslint 何去何从?

由于最近的rust在前端领域的崛起,基于rust的前端生态链遭到rust底层重构,最近又爆出OxLint,是一款基于Rust的linter工具Oxlint在国外前端圈引起热烈讨论,很多大佬给出了高度评价;你或许不知道OxLint,相比ES…

【笔试强化】Day 3

一、单选 1. 正确答案:C子类继承父类,但是 name 被 private 修饰,不能访问 2. 正确答案:D父类构造了对象,但是子类没有使用 super调用,会报错 3. 正确答案:B构造方法可以重载 4. 正确答案&a…

【STM32独立看门狗(IWDG) 】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、看门狗是什么?1.简介2. 主要功能3.独立看门狗如何工作4.寄存器写保护5.看门狗 看门时间 二、使用步骤1.开启时钟2.初始化看门狗3.开启看门狗4.喂…

面试官:你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢

一、什么是SPA SPA(single-page application),翻译过来就是单页应用SPA是一种网络应用程序或网站的模型,它通过动态重写当前页面来与用户交互,这种方法避免了页面之间切换打断用户体验在单页应用中,所有必要…

mac 反编译apk记录

Mac/Linux 去release页下载,有中国下载地址能下载快些。 //也可以直接下载源码,中国下载慢,不推荐。 //git clone --depth1 https://github.com/tp7309/TTDeDroid.git ~/Documents/TTDeDroid//给脚本执行权限 chmod ax ~/Documents/TTDeDro…

AnythingLLM:基于RAG方案构专属私有知识库(开源|高效|可定制)

一、前言 继OpenAI和Google的产品发布会之后,大模型的能力进化速度之快令人惊叹,然而,对于很多个人和企业而言,为了数据安全不得不考虑私有化部署方案,从GPT-4发布以来,国内外的大模型就拉开了很明显的差距…

函数图形渐近线分析

文章目录 曲线的渐近线水平和垂直渐近线斜渐近线斜渐近线公式推导简便方法确定斜渐近线(一次多项式化方法) 例 曲线的渐近线 渐近线综合了极限和函数图形的知识,尤其是斜渐近线 水平和垂直渐近线 若点 M M M沿曲线 y f ( x ) yf(x) yf(x)无限远离原点时,它于某条直线 L L L之…

vue中使用ailwind css

官网地址: 安装 - Tailwind CSS 中文网 推荐一个网站,里面可以查询所有的TailWindCSS的class样式: Tailwind CSS Cheat Sheet npm安装: 注意:1、这里要用npm,不要用cnpm。2、最好用install,不要…

目标检测图片截取目标分类图片

如果要训练一个分类模型却没有特定的分类数据集怎么办呢?可以换一种思路,将带有该目标的图片对所有想要的目标进行画标注框然后进行截图,就能得到特定的分类数据了。这么做的目的是:带有该目标的图片可能不会少,但是带…

Vue前端与后端放在一起的搭建方式

1.首先把后端项目搭建好 去到项目的存放位置 2.然后cmd黑窗口输入命令创建vue项目 3.创建成功后回到后端项目进行合并 3.1在File处选择Project Structure 3.2选择模块 3.3找到自己的vue项目 3.4疯狂next最后create 3.5选择Apply并确定OK,恭喜您创建成功了 二、启动…

Windows bat隐藏运行窗口的几种方案

文章目录 一、背景 二、测试数据 三、隐藏bat运行窗口方案 1. 使用VBScript脚本 2. 使用mshta调用js或vbs脚本 3. 将bat编译为exe程序 4. 使用任务计划程序 一、背景 有些程序在执行批处理脚本时,可能会看到dos窗口,或者看到窗口一闪而过。如果批处理脚本…

Jwt令牌过滤器的下发和拦截(创建在前面)

创建Jwt令牌的方法在前面: JWT令牌的作用和生成https://blog.csdn.net/m0_71149935/article/details/135002840?spm1001.2014.3001.5501令牌的下发: 说明: 只用在浏览器访问服务器的时候校验账户信息是否正确,正确就创建Jwt令…

docker学习(九、分布式存储亿级数据知识)

docker学习(九、分布式存储亿级数据知识) 一、哈希取余分区二、一致性哈希算法分区三、哈希槽分区(重点) 内容整体是以Redis做分布式为例的~~~先出理论,后出实践docker操作 一、哈希取余分区 举个例子:目前…

航带模式拍完之后用重建大师跑出来的模型是弧形的,怎么处理?

答:空三设置-更多设置-定位方式中选择pos高精度,再跑一下看看。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件,输入倾斜照片,激光点云,POS信息及像控点,输出高精度彩色网格模型&a…

小区生活污水处理需要哪些设备和工艺

在小区生活中,污水处理是一个非常重要的环节,它关乎到环境的保护和居民的生活质量。因此,了解小区生活污水处理所需要的设备和工艺是至关重要的。 首先,在小区生活污水处理中,需要用到的设备包括污水收集系统、初级沉淀…

【1】自动化测试环境配置(ARM服务器)

想要从事 or 了解自动化测试开发、装备开发的小伙伴,本专栏内容将从0到1学习如何针对ARM服务器产品进行自动化测试平台的搭建,包括:测试界面的实现(GUI)、测试项的功能实现(压力测试、接口测试、版本更新&a…

工资计算_分支结构 C语言xdoj63

问题描述 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资。假设他一个月的税前工资为S元,则他应交的个人所得税按如下公式计算: 1) 个人所得税起征点为3500元,若S不超过3500,则…

腾讯文档助力CRM集成:无代码连接电商与广告

腾讯文档API的简介与优势 腾讯文档API是一个强大的工具,它允许企业通过简单的无代码开发来实现与电商平台和客服系统的智能连接。这种连接不仅提高了工作效率,还优化了数据管理。使用腾讯文档智能表,商家可以享受多样的列类型、多维视图展示…

【Python】—— 如果使用matplotlib做数据可视化

matplotlib做数据可视化 相关知识掌握matplotlib的基本使用方法1. 折线图2. 散点图3. 柱状图4. 饼图5. 直方图6. 等高线图7. 图形定制 掌握数据处理的基本方法1. 数据筛选2. 缺失值处理3. 异常值处理 理解数据可视化的原则和方法1. 选择合适的图表类型2. 避免数据混淆3. 突出重…