00:00
那接着的话呢,我们说一下下一个叫做解,它呢是JDK自带的一个对于分析的工具,好,那我们来看一下它的一个基本情况。J hi的话呢,它是g vm analysis to啊这样的一个简称啊,是GVM堆空间的一个分析工具,那我们在讲上一个指定解map的时候呢,是不是说主要这个作用是使用dump这个指令生成了一个堆转储的文件,对吧?那么这个文件的话呢,那我们说呢,通过这个。诶在这儿啊,通过我们这个,诶记事本啊,我们想打开看的话呢,这个不太现实的啊,这个我们是看不了的,因为它是一个二进制的一个文件,对吧,那这时候呢,我们就需要一个工具,那既然官方给我们提供了解map,那自然而然的它就应该帮我们再提供一个相关的工具让我们去啊是不是分析使用这呃分析这个呃大文件啊啊那这呢,其实就是我们的这个解he。啊,就是解开的这个指令呢,来进行分析的啊,所以这哥俩呢,其实是一个搭配使用的一个关系,哎,搭配使用的关系就是没了谁都不行对吧。
01:06
那我们使用这个j map呢,生成的堆空间的这个damp文件啊,也叫做这个转文件啊,之后呢,我们解的话呢,它有一个内置的呃,微型的HTTPH的一个服务器。帮我们呢,去分析这个大文件,它得到的这个结果啊,其实我们通过这个几ha呢,说白了我们就调用了相关的一系列这个指令,诶,然后呢,去分析这个大文件,然后最后呢,我们能够通过浏览器的方式呢,去查看这个分析的这个数据结果啊,就这个意思啊,那这呢,我们是一个默认的一个访问的地址啊就OK了。那这里边要说明的问题是什么呢?这个解害呢,看在JK9和十当中呢,被删除了啊,因为呢,Sa公司我们说除了给我们提供这个解害之外呢,他还给我们提了个提供了一个是不是呃V10VM对吧?那V10VM呢,是一个图形化界面的,那显然呢,比我们命令行列工具呢要更好用一些啊,就是这个呢提供重复了,所以在九或十当中,哎,我们就把这个解焊的呢给干掉了啊八里边现在还有,所以我们现在还可以去演示一下啊,那这样的话呢,我们就直接打开咱们这个呃命令行,首先的话呢,我们说这个解he啊,直接你输入一下这个指令,或者呢,你输入这个解he呢,再加上一个杠H或者叫杠help都行,能够显示出来,我们解ha它的一个使用的规则。
02:24
对吧?诶使用的规则这里边呢,我们发现还可以指定非常多的一些option啊,那这呢,其实对应的就是我们下边要呃谈一谈的这个叫基本语法是吧?当然呢,这些参数呢,其实我们也可以不设置哈,哎,也可以不设置,那现在呢,咱们就不设置了,咱直接呢,哎一步到位来看一看它的一个基本使用好这时候大家注意你看打开之后呢,嗯,刚才呢,咱们生成的这个。文件啊,是不是就都在这儿了啊,然后下边呢,我们去读一下这个h pro这个文件啊,同时呢,大家也能够看到我们在读这个文件进行分析的时候呢,我们的CPU呢,会呃,稍微的就会有一个这个上升是吧,然后把这个稍微转一下啊。
03:04
哎,这到这儿。哎,这样子啊。哎,这样啊好行,那现在我们就使用啊解he啊,那首先的话呢,我们就直接指定你后边这个文件的一个路径,比如我们就其中挑一个吧,比如说这个诶三点啊h pro是吧,哎,我们这样子大家注意你看我们右端的这个CPU的一个变化啊,我现在呢要点回车了。好,你看这时候呢,明显我们这个CPU呢,是不是使用量会稍微高一点是吧?哎,因为他这时候帮我们去分析这个文件啊,由于我现在这个文件呢,咱们是一个案例,就咱教学的一个案例了,这个文件呢,本身也不大是吧?哎,我们说这个在实际这个生产环境当中啊,大家这个呃,H pro这个文件呢,可能是几百兆啊,甚至更大,所以说呢,他在刚开始分析的时候呢,对这个CPU的占用呢,也会稍微的高一点。然后在这个指令执行完以后啊,大家会看到最后呢,提供了一个信息,说你这个server呢,Is ready啊,它的端口号呢是7000啊,那此时呢,我们就可以通过浏览器呢进行一个访问啊,我们来看一下啊HTTP。
04:09
哎,然后呢,哎。诶host,然后呢,是还7000啊一回车好,这时候大家会看到这儿呢,就是我们对应的这个分析的一个界面。诶,分析这个界面,那通过这儿呢,也能看到,就是咱们刚才分析的是其中的第三个文件,对吧?啊,那你这时候呢,也只能分析这一个文件啊,然后你想再分析二呢,就你得把这个三的这个关掉才行,所以一次呢,只支持我们分析这一个文件,好那在这里边呢,我们能够看到比较简洁的一些信息啊,所有的关于类的一些情况啊,这呢,我们分析的是j map下的j c test这样一个类是吧,它的这个执行情况啊。呃。下边呢,是关于一些相关的一些查询的信息啊,所有这个类的一些信息啊,这儿呢,我们知道当前我们这个程序当中,呃,在加载的时候呢,用到的相关的一些类啊的一些描述。
05:00
哎,关于这个roots的一些信息啊,其实也涉及到了相关的一些引用的一些情况啊好,那这里边的话呢,我们看一下这个啊,这个呢叫hip啊hisogram啊,就对空间的一个直方图柱状图,那这里边的话呢,你看这个信息显示的是不是类似于我们这个讲这个黑to的时候呢,呈现的这样一个情况是吧。那我们关于这个实例的个数,占用的字节数,还有对应的这个类型,哎,你看我们这里边呈现的是不是也是这样的一个情况呀,而且呢,是按照这个呃,从大到小的这个顺序呢去排列的是吧,跟我们使用这个黑色这个指令呢,是类似的啊。OK,然后下边呢,还有关于我们这个呃,Finalizer啊,它的一个描述啊,由于我们这里边儿没有涉及到这个回收调用finalize方法的,所以这里边儿就没有呈现了是吧。大家注意你看最后还有一个呢,叫o ql的一个查询,诶这个呢要说一下哈,呃,这个结构你看也非常简单,就是如果说呢,我们要简单的只是通过查看这样的一些描述信息,然后我们直接定位呢,问题所在呢,可能会有一些困难啊,那为了更方便的我们去定位一些问题,这呢支持我们相关的这个查询操作啊,比如说呢,我们这里边呃写一下啊,这个叫select。
06:14
比如说我们就针对这个字符串呢,做一个查询吧,呃,Select s,然后from,哎,加点。浪包下的还关于这个string啊,这个S吧,然后where呢,它的一个Y6值的长度。哎,如果大于,就咱们先来个短点100是吧。做一个执行。这呢就相当于查询到了我们整个这个h pro这个文件当中,或者我们这个JC这个程序当中呢,呃,这个字符串呢,它的长度大于100的这样的一些数据啊,这就是我们这里边的相关存储的这个数据了。啊,你看这个还是挺多的是吧,那我们这呢,100有点小,比如我们这个调成1000啊,然后我们再进行一个查询。哎,可以了,相当于通过这样的这个,呃,OKR这个语句呢,我们就可以直接定位啊,我们程序当中的一些比较大的一些这个对象啊,能够简化我们对问题的一个这个这个定位是吧?哎,这是我们说的这样的一个工具啊,它呢有点类似于这个visual vm当中这个OKL语句啊,也跟咱们这个,呃,以前大家学过那个bert是吧,Bernt那个HQL呢,也是比较接近的啊,这是我们关于这个工具的一个说明。
07:20
哎,就到这儿啊,然后呢,诶接下来的话呢,你看我们在这个命令行这块,我直接通过这个CTRLC的这样的一个方式哈。哎,我把刚才这个相对server呢给终结了,终结以后呢,这时候大家再去一个刷新。啊,此时的话呢,就连接不上了,相当于我们把这个微型的server端呢,就给它做了一个关闭啊,就刚才呢,呃这个,呃,看到这个叫什么CPU呢,直接标高,其实也相当于我们现在开启了一个微型的服务器嘛,所以这个CPU的占用呢,也会稍微的高一点点啊。嗯,OK,这呢,就是我们说的这个,呃,H hat j hat这样的一个指令。呃,这个JH的这个指令呢,大家需要注意一点,就在实际生产环境当中,我们不会在这个生产环境里直接呢去生产的服务器里边直接去调用这个jha啊,哎,这个大家稍微注意一下,不会在这个生产服务器上直接去分析这个dump文件啊。
08:13
嗯,下边呢,是关于这个基本语法,刚才呢,我们演示的就是直接啊,通过解呢就调用这个文件了,其实我们还可以在这个文件。啊,把这个放大一点是吧,在这个文件之前呢,写这样的一些option。啊,这些option呢,就是我这里边呢,罗列出来的这些啊,我们做一个了解就行啊,比如说呢,我们通过这个杠stack,然后写一个false或者true表示呢,我们在打开这个H这个文件的时候呢,我们是不是要打开或者关闭对象分配调用站的一个跟踪啊这呢是不是要打开这个对象引用的一个跟踪。啊,这个具体的操作的话呢,比较简单啊,就是直接大家在这块。啊,害。然后这这块呢,比如我们这个叫stack啊,我们需要呢,把它做一个关闭,那你就写个false,然后再指定我们这个文件啊,比如我们这个1.hpro是吧,这个文件啊,这就可以了。
09:11
啊,就类似这样的一个情况啊,然后你再打开这个浏览器呢,进行一个访问就行啊,这块我就带结束了啊。好,然后下边呢是叫杠,就是设置一个端口号,默认的话呢,我们说是这个7000你也可以呢,去做一个修改。啊这呢,你就啊这个我们加上这个D盘这个文件还得是吧,啊这个呢,直接叫port是吧,然后后边呢,比如我们改成这个叫6565,然后呢,再做一个回车。哎,可以了,那这时候我们这个泡呢,就是6565,然后再过来7000的时候呢,我们做刷新。不靠谱是吧,然后呢,我们把这个呢,改成叫6565。哎,回车啊,这时候就能访问了,就是修改端口号啊,如果呢,我们发现这个端口冲突的话呢,通过这个指令呢,去修改一下端口号就可以了。嗯,然后这个我们在CTRLC啊,把它关停一下。
10:02
还有一个参数啊,这个这这个我就不多说了啊,这个比如说杠version,就查看一下我们这个解一个版本。啊啊。我。它是一个2.0的一个版本啊就行好,其他这些参数呢,我就不多说了,因为呢,我们这个这个解害的话呢,在我们JDK90当中呢,就把它给干掉了,后边呢,推荐我们直接用VVM呢去分析这个MP文件,所以这里呢,我们针对这个解呢,就做一个简单的介绍啊,知道呢,命令行也有一个工具让我们去分析这个单MP文件啊就行。好,这呢就是我们关于这个解的一个说明。
我来说两句