用jprofiler来分析 jvm 堆 内存泄露,fullgc

news2025/7/13 18:19:55

jvm 命令和工具_个人渣记录仅为自己搜索用的博客-CSDN博客

 堆太大?

  方法1: 重新设置堆后,重启,复现.

  方法2:  切割

split -b 1M heap.bin smallfile
scp smallfile* username@mac-host:/Users/username/
cat smallfile* > heap.bin

 官网文档

JProfiler Help - HPROF snapshots

heap walker教学:

用jprofile查看hprof文件_hprof jprofile_java老张的博客-CSDN博客

通识教学:

JVM监控及诊断工具GUI篇之JProfiler_每天都要进步一点点的博客-CSDN博客

问题: 接口调用超时逐步增加

分析 - > 发现进程 cpu占比很高 -> 进一步分析是垃圾回收线程一直在工作. 

-> 在看堆 ,堆占满了.

1. 降低jvm 参数,最大内存数, 复现

2. jmap dump

jmap -dump:live,format=b,file=<filename> <PID>

3. 在JProfiler打开.

4 找到最大size (retained size )的对象. 一层一层展开 有 %比

 遇到"transitive reference" , 链接分析被中断了. 直接右键

选择 "incoming references" 

 直接定位到源头, dev环境的agent 泄露了.  本地环境上没有这个agent 看代码分析肯定也分析不出来.

    问题 "transitive reference" 是什么, 如何展开?
在Java语言中,一个对象可能会引用其他对象,这些被引用的对象也可能会引用其他对象,这样就形成了一个对象的引用链。如果在这个引用链中,存在某个对象A被其他对象引用,并且对象A也直接或间接引用了其他对象,那么这些被间接引用的对象就称为对象A的传递引用(transitive reference)。

在JVM内存管理中,如果一个对象被其他对象引用,那么这个对象就不能被垃圾回收。如果这个对象又间接引用了其他对象,那么这些间接引用的对象也不能被垃圾回收。如果这种引用关系形成了一个传递引用链,那么整个链上的所有对象都不能被垃圾回收,即使它们已经变成了不可达对象。

5. 选择最大size的类 . 刚好对象有重复.

 

在 JProfiler 中,"Use Selected Object"、"Use Selected java.lang.Class Object" 和 "Use Retained Objects" 是三个不同的选项,用于在内存分析时选择对象。

  1. "Use Selected Object" 选项允许你选择一个对象,然后查看该对象的引用关系、内存使用情况和方法调用链等信息。该选项适用于分析单个对象的内存使用情况。

  2. "Use Selected java.lang.Class Object" 选项允许你选择一个类对象,然后查看该类的内存使用情况、实例数量和方法调用链等信息。该选项适用于分析某个类的内存使用情况。

  3. "Use Retained Objects" 选项允许你选择一个对象,然后查看该对象及其引用的其他对象的内存使用情况。该选项适用于分析对象之间的引用关系和内存泄漏问题。

总的来说,这三个选项的区别在于它们选择的对象不同,从而适用于不同的内存分析场景。"Use Selected Object" 选项适用于分析单个对象的内存使用情况,"Use Selected java.lang.Class Object" 选项适用于分析某个类的内存使用情况,"Use Retained Objects" 选项适用于分析对象之间的引用关系和内存泄漏问题。

5.2 凑巧方法: 直接从String 类 着手,排序.

 附录

retained size等概念

shallow size

   Shallow size是指一个对象本身占用的内存大小,

retained size

   而retained size则是指一个对象及其引用对象占用的总内存大小。简单来说,shallow size是指对象自身占用的内存大小,而retained size则是指对象及其引用的其他对象占用的总内存大小。

deep size 

  deep size是指一个对象及其引用对象占用的总内存大小,但只计算直接引用的对象。例如,一个对象A直接引用B和C两个对象,B对象又引用D和E两个对象,那么A对象的deep size就是A、B和C这三个对象的总内存大小。

因此,Retained size和Deep size的区别在于计算引用对象的深度不同,Retained size会计算间接引用的对象,而Deep size只计算直接引用的对象。

问题: " Cannot View Allocations from Heapdump in JProfiler"


HPROF snapshots do not contain any information where objects were allocated. You have to use the JProfiler profiling agent and record allocation data before taking a heap snapshot in order to use this functionality.

问题 "transitive reference" 是什么, 如何展开?


在Java语言中,一个对象可能会引用其他对象,这些被引用的对象也可能会引用其他对象,这样就形成了一个对象的引用链。如果在这个引用链中,存在某个对象A被其他对象引用,并且对象A也直接或间接引用了其他对象,那么这些被间接引用的对象就称为对象A的传递引用(transitive reference)。

在JVM内存管理中,如果一个对象被其他对象引用,那么这个对象就不能被垃圾回收。如果这个对象又间接引用了其他对象,那么这些间接引用的对象也不能被垃圾回收。如果这种引用关系形成了一个传递引用链,那么整个链上的所有对象都不能被垃圾回收,即使它们已经变成了不可达对象。
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【逃离】UniAccess

能看到这篇文章&#xff0c;说明你已经是老屁股了&#xff08;保命要紧&#xff09; 上面是UniAccess功能 你想要做的事情无非是三种 不顾后果强力卸载UniAccess期望只保留(内网)网络认证禁用UniAccess部分功能 第一种&#xff1a;直接卸载&#xff0c;这里不做说明了&#x…

开发轮子(一):全国省/市/区/街道三、四级联动

概述 本服务提供中国标准行政区划数据查询功能&#xff0c;支持&#xff1a; 1 . 全国省、市、区/县、乡镇/街道 四级行政区划数据&#xff1b; 2 . 支持三级区划&#xff08;省/市 - 区/县&#xff09;轮廓数据&#xff1b; 3 . 支持区划查询、省市区列表、查询子级区划等功能…

十六、立方体贴图(天空盒)

第一部分 概念&#xff1a; 1) 引用 OpenGL ES 立方体贴图本质上还是纹理映射&#xff0c;是一种 3D 纹理映射。立方体贴图所使的纹理称为立方图纹理&#xff0c;它是由 6 个单独的 2D 纹理组成&#xff0c;每个 2D 纹理是立方图的一个面。 立方图纹理的采样通过一个 3D 向量…

CodeGeeX 2.0版本重大升级:通过聊天对话的方式直接操作代码

CodeGeeX 2.0版本正式上线&#xff01;从命名上看这是一次大版本的升级。 上个月&#xff0c;CodeGeeX在VSCode和JetBrains IDEs的插件中&#xff0c;加入了智能问答&#xff08;Ask CodeGeeX&#xff09;功能&#xff0c;让用户可以在IDE中通过问答对话的方式解决技术问题。本…

Selenium自动化程序被检测为爬虫,怎么屏蔽和绕过

Selenium 操作被屏蔽 使用selenium自动化网页时&#xff0c;有一定的概率会被目标网站识别&#xff0c;一旦被检测到&#xff0c;目标网站会拦截该客户端做出的网页操作。 比如淘宝和大众点评的登录页&#xff0c;当手工打开浏览器&#xff0c;输入用户名和密码时&#xff0c…

docker 无法将“docker”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

&#x1f4a7; d o c k e r 无法将“ d o c k e r ”项识别为 . . . . . . \color{#FF1493}{docker 无法将“docker”项识别为......} docker无法将“docker”项识别为......&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页…

Elasticsearch:路由 - routing

你是否考虑过 Elasticsearch 如何知道将文档存储在何处&#xff1f; 它如何知道在哪里寻找它们&#xff0c;以及是否检索、更新或删除它们&#xff1f; 这是一个令人兴奋的过程&#xff0c;一切都归结为路由的概念。 路由介绍 路由是确定文档属于哪个分片以便检索它或将其存储在…

新手配learnsite

把下载好的learnsite放在C盘根目录下 改个名 开始&#xff0c;Microsoft SQL Server Tools 19,SQL Server Management studio 19 这里我其实是没看懂&#xff0c;但是我觉得是选个服务器。 点开数据库引擎这里试一下 因为我来回装好几次sql&#xff0c;这里只有ls2有印象好像是…

git statsh、git submodule

文章目录 git stash解决git pull和本地文件的冲突1、先将本地修改存储起来2、pull内容3、还原暂存的内容4、解决文件中冲突的的部分5、删除stash。6 、git stash pop 与 git stash apply <stash{id}> 的区别。 回退后的版本是不追踪的git 还原修改git submodule git stas…

SpringBoot整合达梦数据库的教程(详解)

一、官网下载试用版本 http://www.dameng.com/down.aspx 我是win 11系统下载如下&#xff1a; 二、安装 解压后 双击打开iso文件 然后点击安装 选择创建实例&#xff08;注意记住账号/密码 端口号 默认的是 SYSDBA/SYSDBA 5236&#xff09; 然后一直下一步 到完成&#xff…

Win11下查看快捷键占用情况

Win11下查看快捷键占用情况 使用 OpenArk&#xff0c;根据文档描述&#xff0c;它可以查看许多 Windows 系统信息&#xff0c;包括快捷键&#xff0c;支持 Win10。 操作步骤&#xff1a; 1.下载 OpenArk Github&#xff1a;https://github.com/BlackINT3/OpenArk 单文件下载&…

计算机毕业论文内容参考|基于c语言的新一代预约挂号系统的设计与实现

文章目录 导文文章重点前言系统架构相关技术与方法介绍网络通信技术数据库管理技术算法模型选择技术分析技术设计:技术实现:总结与展望:本文总结:后续工作展望:导文 计算机毕业论文内容参考|基于c语言的新一代预约挂号系统的设计与实现 文章重点 前言 随着科技的不断发展…

linuxOPS基础_linux软件包安装

软件包概述 上图是windows下的软件包 Linux下也有很多可以安装的软件&#xff0c;而这些软件的安装包可细分为两种&#xff0c;分别是源码包和二进制包。 Linux下软件的安装方式 ① RPM软件包安装 > 软件名称.rpm ② YUM包管理工具 > yum install 软件名称 -y ③ 源码…

红外-星光-黑光-全彩夜视摄像头选型

星光”、“黑光”、“AI超微光”、“极光”&#xff0c;在安防行业这些概念似乎比“低照度摄像机”本身要火的多。 无论营销名称是什么&#xff0c;归根到底&#xff0c;它们都是用不同的方法使摄像机能在夜间拍摄到更像白昼一般的 高清夜视摄像头除了以前我们在项目上经常使…

腾讯云服务器怎么使用?新手入门教程

腾讯云服务器入门教程包括云服务器CPU内存带宽配置选择&#xff0c;选择云服务器CVM或轻量应用服务器&#xff0c;云服务器创建后重置密码、远程连接、搭建程序环境等&#xff0c;腾讯云服务器网分享从0到1腾讯云服务器入门教程&#xff1a; 腾讯云服务器入门教程目录&#xf…

进程信号

目录 信号的产生方式 程序的崩溃 通过键盘产生 进程异常产生 系统调用产生 软件条件产生 信号产生中 函数介绍 sigset_t&#xff08;信号集&#xff09; sigprocmask函数 sigpending函数 信号处理 用户态和内核态的理解 处理信号的过程 信号捕捉 sigaction函数…

安全测试13款免费的测试工具!

目录 前言&#xff1a; 1. Excercise in a Box 2. Needle 3. DevSlop 4. 移动安全框架(Mobile Security Framework) 5. Frida 6. Nishang 7. Tamper 8. InSpec 9. Faraday 10. Pocsuite 11. Taipan 12. Pacu 13. Secure Guild 前言&#xff1a; 首先&#xff0c;我想强调一…

策略模式——实践:在业务逻辑中理解设计模式

一般定义 策略模式(Strategy Pattern)&#xff1a;定义一系列算法&#xff0c;将每一个算法封装起来&#xff0c;并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化&#xff0c;也称为政策模式(Policy)。 主要角色 Context: 环境类 Strategy: 抽象策略类 Concr…

CnOpenData电商平台交易数据数据

一、数据简介 电子商务是网络化的新型经济活动&#xff0c;是推动“互联网&#xff0b;”发展的重要力量&#xff0c;是新经济的主要组成部分。通过电商平台获取的电商交易平台数据可以及时统计、监测数据&#xff0c;全方位跟踪分析电子商务市场的发展情况和发展环境&#xff…

mysql中的group by 和 having使用

mysql中的group by 和 having 使用 理论 –sql中的group by 用法解析&#xff1a; – Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。 –它的作用是通过一定的规则将一个数据集划分成若干个小的区域&#xff0c;然后针对若干个小区域进行数…