如何用MAT(Eclipse Memory Analyzer)

首先用Android studio 生成hprof文件,比如文件名叫:xxx.hprof

然后用hprof-conv xxx.hprof memory-converted.hprof

因为MAT只支持java版的hprof,as生成的hprof只能android版本的hprof,直接导入MAT会报错。

然后通过mat打开这个memory-converted.hprof

然后open a Heap Dump-> Leak Suspects Report

通过分析可以看到Bitmap 占用的内存比较多 点开detail->Suspect Objects by Class

first 10 of 304objects 点开对象列表

然后找最大的对象右键Path to gc Roots->Exclude Weak References 然后就可以看到对象的引用了。

我做了一个自动转hprof的脚本,只要把这个做成app就可以把xxx.hprof 拖到这个app上,就能生成convert的hprof了

javascript 复制代码
on open droppedItems
	repeat with oneItem in droppedItems
		set inputPath to POSIX path of oneItem
		
		-- 输出到原文件同目录,文件名自动加 -converted
		do shell script "
			input_file=" & quoted form of inputPath & "
			dir=$(dirname \"$input_file\")
			base=$(basename \"$input_file\" .hprof)
			output_file=\"$dir/${base}-converted.hprof\"
			/opt/homebrew/bin/hprof-conv \"$input_file\" \"$output_file\"
		"
	end repeat
	
	display dialog "转换完成" buttons {"确定"} default button "确定"
end open

然后可以通过打开Top Components->点开内存最大的比如<system class loader> (80%)->Top Consumer->Biggest Objects 根据Retained Heap 排序,找大的对象进行分析

相关推荐
小研说技术几秒前
结构化输出让Agent返回可预测的格式数据
java·人工智能
两年半的个人练习生^_^15 分钟前
PinYin4j汉字转拼音使用及踩坑
java
Cat_Rocky40 分钟前
通过k8s实现单pod部署
java·容器·kubernetes
秋91 小时前
Java AI编程工具全景解析:功能、收费与工单系统实战指南
java·开发语言·ai编程
瑶山1 小时前
IDEA 配置Go语言开发环境、GOPATH传统 Go 项目导入
java·golang·intellij-idea
weixin_419658311 小时前
RabbitMQ 的高级特性
java·分布式·rabbitmq
白晨并不是很能熬夜1 小时前
【RPC】第 1 篇:全景篇 — 一次 RPC 调用的完整旅程
java·网络·后端·网络协议·面试·rpc·java-zookeeper
小菜鸟阿呆yu1 小时前
【pycharm】安装包例如pymysql
ide·python·pycharm
z小天才b2 小时前
Java 设计模式完全指南:从入门到精通
java·开发语言·设计模式
烤麻辣烫2 小时前
算法--二分搜索
java·开发语言·学习·算法·intellij-idea