Jprofiler 内存分析使用

1. 内存分析工具 Jprofiler

安装JProfiler(本文使用JProfiler11)
链接:https://pan.baidu.com/s/1VBHLIo8hIVGeeLjaBVjcIg
提取码:q5wl


1.在JProfiler的堆遍历器(Heap Walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图:

	类 Classes
	显示所有类和它们的实例,可以右击具体的类"Used Selected Instance"实现进一步跟踪

	分配 Allocations
	为所有记录对象显示分配树和分配热点

	索引 References
	为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。还能提供合并输入视图和输出视图的功能。

	时间 Time
	显示一个对已记录对象的解决时间的柱状图。

	检查 Inspections
	显示了一个数量的操作,将分析当前对象集在某种条件下的子集,实质是一个筛选的过程。


2.从服务器上将dump文件拿下来  xxx.hprof


3.使用JProfiler打开

4.查看Classes

5.查看Reference
	5.1 选择一个class或者biggest object



	5.2 Use Slected Objects


	5.3 Incoming references


	incoming references
	显示这个对象被谁引用 -----点击【显示更多】

	outcoming references
	显示这个对象引用的其他对象


6.查看, 具体引用的 包名和类全路径


7 .查看Graph

		Incoming references


8.查看代码, 定位




9. 扩展:


	生成Dump文件,JVM启动时添加参数:

	#出现 OOME 时生成堆 dump:
	-XX:+HeapDumpOnOutOfMemoryError
	#生成堆文件地址:
	-XX:HeapDumpPath=/home/xxx/logs/



	9.1 linux tomcat

	打开/tomcat_home/bin/catalina.sh文件

	JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -server -Xms6144m -Xmx6144m -XX:NewSize=384m
	-XX:MaxNewSize=450m -XX:PermSize=128m -XX:MaxPermSize=2048m
	-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/zyf/logs"

		注:其中不设-XX:HeapDumpPath时,dump出的文件在/tomcat_home/bin目录下


	9.2 linux springboot

		nohup java -Xms2048m -Xmx2048m -XX:NewSize=384m -XX:MaxNewSize=450m -XX:PermSize=128m
		-XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/darren/logs/ 
		 -jar test.jar --spring.profiles.active=prod &


     
                    nohup java
                    -Xms2048m 指定堆内存初始化大小
                    -Xmx2048m 指定堆内存最大内存大小,
                    Xms设置和Xmx设置相同是为了避免频繁扩容和GC释放堆内存造成系统开销压力
                    -XX:NewSize=384m 新生代初始化内存的大小
                    -XX:MaxNewSize=450m 新生代可被分配的内存的最大上限(注意:该值需要小于-Xmx的值)
                    -XX:PermSize=128m 非堆区初始化内存分配大小
                    -XX:MaxPermSize=2048m 非堆区分配的内存的最大上限
                    -XX:+HeapDumpOnOutOfMemoryError 当JVM发生OOM时,自动生成DUMP文件
                    -XX:HeapDumpPath=/home/darren/logs/ 生成目录
    
                    nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
                    nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,
		如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中


	9.3 windows tomcat

		打开/tomcat_home/bin/catalina.bat文件

			set JAVA_OPTS=%JAVA_OPTS% 
			-server 
			-XX:+HeapDumpOnOutOfMemoryError
			-XX:HeapDumpPath=D:\heapdump
  1. 运行中的项目生成dump 文件步骤
    jps 查看进程pid

    jmap -dump:live,format=b,file=myFullGcDump.hprof   pid
    

    使用工具Jprofiler 或者MAT 工具进行分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值