eclipse与visualVM与mat_blackDai的博客-程序员秘密_visualvm和mat

技术标签: mat  java  visualVM  java工具  eclipse  

GC与CPU与内存的查看与分析

 

 

本文主要讲visualVM,MAT的下载配置;以及如何运用visualVM生成hprof文件;如何用visualVM分析CPU消耗,程序瓶颈在哪里;怎么用MAT导入hprof文件以及简单的查看,仅推荐刚刚接触GC的萌新食用,讲得不对的地方欢迎大佬指正得意

 

---------------------------------------------------------------------------------------------------------------------------

万能分割线--------------万能分割线--------------万能分割线--------------万能分割线--------------万能分割线----------

---------------------------------------------------------------------------------------------------------------------------

visualVM下载:

    打开网址:   https://visualvm.github.io/ 点击打开链接  这是visualVM下载地址,打开你会看到这个界面

    

点击下载,当然等你看到的时候可能不是这个版本了,不要慌,下最新的

因为博主用的windows所以直接下载的上面的zip文件,Mac用户下载下面那个

下载后你会得到这么一个压缩包,解压到本地

visualVM 获得

用法:

如果大吉大利的话你会得到这个视图

如果不幸你的VisualVM没有搜索到Eclipse,不要慌,博主也遇到了,我来教你佛系修复法----->

 

  1. eclipse打开,右下角如果提示你更新就打开它,更新,没有提示说明已经是最新版或者更新被关闭
  2. 在eclipse打开后重新打开VM刷新一下看看如果没有
  3. 重启电脑,打开eclipse,打开VM如果成功那么大吉大利如果没有
  4. 说明真的出现了问题,VM弹出的窗口有网站,你进入网站找到和自己情况相吻合的异常处理,根据他的描述以及其他博客的帮助解决快哭了

大吉大利的用户看这边:

VisualVM的使用:

 

   跑待检测的应用,注意:不要让你的程序过快的停止,否则VM会捕捉不到,而且程序停止后相应的线程也会被回收

    打开VM你会发现左栏多了一个在跑的程序,打开它你会看到这个程序的简介

在Monitor中你可以选择查看CPU,内存,类,线程的使用与运行情况:

右侧Perform GC是手动GC,也就是手动进行垃圾回收,因为博主将文件统统读进了List中所以几乎没有自动GC,你们在跑自己的程序时也许会有较多的GC次数

Heap Dump是生成一个当前dump的信息,待会我们要用它来生成hprof文件

 

Treads中专门查看线程的产生与注销,如果不是并发编程可以不用看

优化的重点来了--->通过CPU查看程序瓶颈在哪里

博主比较喜欢使用sampler,所以就主要讲解这个了

在sample中点击CPU

展开你会看到各个函数用的cpu时间

在下图你可以看到有一个东西叫做Self Time,这是个什么呢?,这个其实是这个函数的本身消耗的时间,还能有别的时间吗?当然有,那就是这个函数调用其它函数所消耗的时间,

分析下图我们可以看到博主的程序主要卡在Regular()函数本身的消耗,以及vertices()函数调用的add(),还有一部分是log占用的时间,要提升性能就只能通过这几个地方才能明显提升了

因为博主这个程序是已经优化过的,所以不能现场演示怎么调优了,之前这个函数是要跑四个多小时的,通过检查CPU的消耗,发现了程序瓶颈删减四五行代码后,运行时间缩短到了一分四十秒,并且结果没有错误,可见用这个工具是很有帮助的

Memory查看当前程序是谁在占用内存,可用于观察数据结构是否优良

Profiler:与sampler有异曲同工之妙

 注意这个地方你要写清楚要观察的是什么类,Memory的设置也是一样的

打开这几个地方你就能观察到数据

snapshot: 当你程序终止进程关闭时VM会提示你要不要保存snapshot

这个与Profiler异曲同工,都是用来观察你程序的运行信息的

 

 

 

 

 

 

欸,我们是不是忘了什么,,,,,,,,好吧hprof文件到底怎么生成呢??

记得下面这个图不?

点击heap dump 你就会观察到下图

点击这个文件你就会看到"另存为"这个按钮变亮了

点一下你就会看到,竟然可以保存为hprof文件了,,,

hprof -----get得意

 

 

 

 

进入下一阶段--

--MAT的下载:

网址:    http://www.eclipse.org/mat/    点击打开链接

打开后你会发现下载位置藏在了这两个地方,随便点击一个打开

 

 

这么多版本,应有尽有啊,因为楼主是64位系统所以选择了64位的

 

同样的套路

压缩包get

解压,MAT get

打开它你就会看到下图

file->Open Heap Dump

找到刚刚保存的hprof文件打开它

 

选择leak->finish

恭喜你获得第一份内存分析报告.可喜可贺可喜可贺得意得意得意

 

 

如果有想要深入了解MAT的读者,可以到网上搜各种深入教程,这里我就不献丑啦

希望屏幕前(帅气)/(漂亮)的你可以为深夜发博的博主来一波素质三连(点赞,关注,666),祝大家都能跑出运行漂亮的程序啊---

---碎觉碎觉睡觉

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41626826/article/details/80588792

智能推荐

2015 年蓝桥杯C++B组国赛 密文搜索_Qingo呀的博客-程序员秘密

标题:密文搜索福尔摩斯从X星收到一份资料,全部是小写字母组成。他的助手提供了另一份资料:许多长度为8的密码列表。福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的。请你编写一个程序,从第一份资料中搜索可能隐藏密码的位置。要考虑密码的所有排列可能性。数据格式:输入第一行:一个字符串s,全部由小写字母组成,长度小于1024*1024紧接着一行是一个整数n,表示以下有n行密码...

Python爬取ALIEXPRESS电商网站_一超S的博客-程序员秘密_速卖通爬虫

首先,这里使用的是简单的方法——“requests”模块。这种方法适合初学者使用,如果你想挑战更高级别的你可以自学scrapy爬虫框架,里面有一个“crawlscrapy”分支更是强大;下面就简单的介绍一下爬取这个电商网站。主要还是知道大概的流程之后写爬虫就很简单了。可能在写完爬虫代码运行一小段后会出现让你登录的情况,这个你可以手动登录,也可以使用python支持的自动点击模块pyautogui...

浅谈Struts2与Webwork的不同和相同点_Hustudent20080101的博客-程序员秘密_webwork和struts2

浅谈Struts2与Webwork的不同和相同点2011-06-28 09:14 honeymoose OSS社区 字号:T |T本文介绍的两大开发框架,Struts 2和WebWork。希望能够给你带来帮助,一起来看。AD:51CTO网+ 首届中国APP创新评选大赛>>Struts 2是Struts的下一代产品。是在

小学计算机课程科学与计算机,浅谈小学科学与信息技术的整合_诡道荒行的博客-程序员秘密

浅谈小学科学与信息技术的整合世界科学技术正在发生新的重大突破,以信息技术和生命科学为代表的现代科技突飞猛进。人们面临着以教育信息化带动教育的现代化实现基础教育跨越式发展的机遇,国家基础教育课程改革纲要(试行)指出:“教学过程中要大力推进信息技术在教学中的普遍应用,促进信息技术与学科课程整合,逐步实现教学内容呈现方式、学生学习的方式、教师教学方式和师生互动方式的改革,充分发挥信息技术的优势,为学生的...

发布源码及依赖到网络maven仓库_chichou9946的博客-程序员秘密

目的: 通过eclipse工具,使用maven命令,将maven工程编译后的jar、源码、依赖环境,都发布到网络maven仓库; 方便其他工程引用,查看源码,及自动下载依赖环境; maven关键命令 deploy -- 发布到远程仓库 ...

matlab 二进制写入文件,在Matlab中读取/写入二进制文件_花菌子的博客-程序员秘密

如Bill the Lizard所写,您可以使用fread将数据加载到向量中.我只想扩大一点他的答案.阅读数据>> fid=fopen('data.bin','rb') % opens the file for reading>> A = fread(fid, count, 'int16') % reads _count_ elements and stores them ...

随便推点

BZOJ4552 - [TJOI2016]排序_ayw1069的博客-程序员秘密

PortalDescription给出一个\(1..n(n\leq10^5)\)的排列,进行\(m(m\leq10^5)\)次操作:升序排列\([L,R]\)中的数。降序排列\([L,R]\)中的数。所有操作完成后,求位置\(q\)上的值。Solution居然是二分答案...!对于可能的答案\(x\),将所有小于\(x\)的数视为\(0\),大于等于\(x\)的数视为...

WINDOWS环境下CloudCompare2.11.3+VS2019+QT5.15+cmake配置错误解决方案_Echo_Echo_.的博客-程序员秘密

WINDOWS环境下CloudCompare2.11.3+VS2019+QT5.15+cmake配置错误解决方案今天在用cmake编译CloudCompare2.11.3时,出现了一个问题点击configure后一直报如下的错误:解决方案:在CloudCompare2.11.3的安装路径下新建文件夹命名为prefix,然后在cmake编译界面找到CMAKE下的CMAKE_INSTALL_PREFIX。如图所示,将刚刚新建的文件夹路径添加进入再次configure就能.

面试官:说一下公平锁和非公平锁的区别?_程序猿微刊的博客-程序员秘密

前言上次我们提到了乐观锁和悲观锁,那我们知道锁的类型还有很多种,我们今天简单聊一下,公平锁和非公平锁两口子,以及他们在我们代码中的实践。正文开始聊之前,我先大概说一下他们两者的定义,帮大家回顾或者认识一下。公平锁:多个线程按照申请锁的顺序去获得锁,线程会直接进入队列去排队,永远都是队列的第一位才能得到锁。优点:所有的线程都能得到资源,不会饿死在队列中。 缺点:吞吐量会下降很多...

【ESP32】【ESP32-PICO 系列】_iMr_Stone的博客-程序员秘密_esp32 pico

ESP32-PICO-D4ESP32 系统级封装 (SiP),3.3V 4 MB flash,无内置 PSRAM,双核 MCU,Wi-Fi & 蓝牙双模工作电压 3.0 ~ 3.6VLGA48-pin,7x7x0.94 mm–40 °C ~ +85 °C有以下几点需要注意:嵌入式 flash 连接至 VDD_SDIO,由 VDD3P3_RTC 通过约 6 Ω 电阻直接供电。因此,VDD_SDIO 相对 VDD3P3_RTC会有一定电压降IO16、IO17、CMD、CLK、S.

量子计算机的定义,量子信息的基本概念_weixin_39927799的博客-程序员秘密

《量子信息的基本概念》由会员分享,可在线阅读,更多相关《量子信息的基本概念(35页珍藏版)》请在人人文库网上搜索。1、Chapter One Ocean University of China Content: 量子信息简介量子信息简介 1.1 量子隐形传态量子隐形传态 1.5 量子克隆量子克隆 1.4 量子计算量子计算 1.3 量子比特量子比特 1.2 量子算法量子算法 1.6 Ocean Un...

推荐文章

热门文章

相关标签