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第三方工具使用实践 至此就结束了,如有疑问,欢迎评论区留言。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七. 使用ts写一个贪吃蛇小游戏

之前学习了几篇的ts基础,今天我们就使用ts来完成一个贪吃蛇的小游戏。 游戏拆解 我们将我们的任务进行简单拆解分析。 首先我们应该有一个窗口,我们叫做屏幕。让蛇在里面移动,所有我们应该想到要设计一个大盒子当作地图。考虑到食物以及蛇…

华为数通——企业双出口冗余

目标:默认数据全部经过移动上网,联通低带宽。 R1 [ ]ip route-static 0.0.0.0 24 12.1.1.2 目的地址 掩码 下一条 [ ]ip route-static 0.0.0.0 24 13.1.1.3 preference 65 目的地址 掩码 下一条 设置优先级为65 R…

SaaS行业分析

文章目录 什么是SaaS ?SaaS的标准定义什么是软件即服务?SaaS与传统软件的区别 ? SaaS行业分析你知道最赚钱的行业是什么?互联网带给企业的变化 SaaS与PaaS、IaaS的区别?IaaS(Infrastructure as a Service)…

关于“Python”的核心知识点整理大全22

目录 ​编辑 9.4.2 在一个模块中存储多个类 虽然同一个模块中的类之间应存在某种相关性,但可根据需要在一个模块中存储任意数量的 类。类Battery和ElectricCar都可帮助模拟汽车,因此下面将它们都加入模块car.py中: car.py my_electric_car…

【Linux】Redis 数据库安装教程(Ubuntu 22.04)

前言 Redis是一个开源的内存数据库,它可以用作键值存储、缓存和消息代理。它支持各种数据结构,包括字符串、哈希、列表、集合、有序集合等。Redis通常被用于构建高性能、可扩展的应用程序,特别是那些需要快速访问数据和实时数据处理的应用场…

高压电气是什么

高压电气 电工电气百科 文章目录 高压电气前言一、高压电气是什么二、高压电气的类别三、高压电气的作用原理总结前言 高压电气在电力系统中起着重要的作用,它能够将电能有效地输送和分配到各个用户,为社会和工业生产提供稳定可靠的电力供应。然而,高压电气系统也需要注意安…

【Qt开发流程】之网络编程:`HTTP`和`FTP`的高级网络操作

概述 Qt Network模块提供了可以编写TCP/IP客户端和服务器的类。它提供了较低层次的类,如QTcpSocket、QTcpServer和QUdpSocket,来代表低层次网络概念,以及高级层次类,如QNetworkRequest、QNetworkReply和QNetworkAccessManager&am…

什么是供应链安全及其工作原理?

6000公里长的丝绸之路将丝绸、谷物和其他货物从中国运送到帕尔米拉。尽管蒙古治下的和平保护丝绸之路免受海盗、强盗和内部盗窃的侵害,但商人仍然装备精良,并依赖于大型商队旅行和战略性放置的小型堡垒所提供的安全。 为什么供应链安全很重要&#xff1…

[蓝桥杯刷题]合并区间、最长不连续子序列、最长不重复数组长度

前言 ⭐Hello!这里是欧_aita的博客。 ⭐今日语录: 成功的关键在于对目标的持久追求。 ⭐个人主页:欧_aita ψ(._. )>⭐个人专栏: 数据结构与算法 数据库 文章目录 前言合并区间问题📕现实应用大致思路代码实现代码讲解 最长不连续子序列&a…

机器学习支持向量机(SVM)

svm与logstic异同 svm支持向量机,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化&#x…

【深度学习】机器学习概述(二)优化算法之梯度下降法(批量BGD、随机SGD、小批量)

​ 文章目录 一、基本概念二、机器学习的三要素1. 模型a. 线性模型b. 非线性模型 2. 学习准则a. 损失函数b. 风险最小化准则 3. 优化机器学习问题转化成为一个最优化问题a. 参数与超参数b. 梯度下降法梯度下降法的迭代公式具体的参数更新公式学习率的选择 c. 随机梯度下降批量…

DevEco Studio 项目鸿蒙(HarmonyOS)资源引用(自定统和系统)

DevEco Studio 项目鸿蒙(HarmonyOS)资源引用(自定统和系统) 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、资源访问 HarmonyOS应用资源分为两类,一类是应用资源&…