JVM学习系列学习五

作者: 凯哥Java | 来源:发表于2019-07-03 09:26 被阅读2次

我们接着上一篇文章讲解:

4.2:查看内存中对象数量及大小

查看所有对象,包括活跃及非活跃的。使用命令:

Jmap -histo <pid> | more

查看活跃对象:

Jmap -histo:live <pid> | more

对象说明:

B: byte

C: char

D: double

F: float

I: int

J: long

z: Boolean

[]:数组 如 [I]:表示的是int数组

[L+类名:其他对象

4.3:将内存使用情况dump到文件中

在有些时候,我们需要将JVM当前内存中的情况进行分析。这个时候,我们就需要先将内存中数据放到文件中。

Jmap也支持dump。

用法:

jmap -dump:format=b,file=/home/dump.data 20031

Jmap -dump:format=b,file=dumpFileName<pid>

示例:

Cd到home。查看刚才dump的文件:

4.4:通过jhat对dump文件进行分析

刚才我们将JVM内存dump到了文件中,这个文件就是一个二进制文件。不方便查看,这时候,我们可以借助与其他工具进行查看。

可以使用jhat这个命令进行分析查看。

语法:

jhat -port <port> <file>

示例

查看分析后的数据:

我们可以通过浏览器+端口访问分析后的数据。

使用OQL查询:

在最后面,我们可以看到有个OQL查询功能:

OQL:Object Query Languagen

假设我们现在要查询字符串长度大于10000的内容:

OQL语句:select s from java.lang.String s where s.value.length >=10000

执行结果:

本文是《JVM学习系列》中的第三篇文章。如果想系统的学习,建议从本教程第一篇开始看。

下节预告:

本文来源:http://www.kaigejava.com/article/detail/465

凯哥个人博客:www.kaigejava.com

凯哥公众号:凯哥Java(kaigejava)

相关文章

  • JVM学习系列学习五

    我们接着上一篇文章讲解: 4.2:查看内存中对象数量及大小 查看所有对象,包括活跃及非活跃的。使用命令: Jmap...

  • JVM学习系列学习六

    本文是《JVM学习系列》教程中第六篇文章。不是单篇的。 我们接着上一篇讲解: 4.5:通过MAT工具对dump文件...

  • JVM学习系列学习七

    5:实战:内存溢出的定位与分析 内存溢出在日常工作中,这个错误很容易遇到。遇到内存溢出,首先我们需要快速定位内存溢...

  • JVM学习系列学习四

    我们接着上一篇讲解: 使用命令查看对内存使用情况 使用到的命令:jstat Jstat:此命令可以查看对内存各个部...

  • JVM学习系列学习一

    本文主要内容: ​ 一:为什么要对JVM进行优化? 我们在自己电脑上进开发的时候,几乎很少考虑对JVM进行优化。但...

  • JVM学习系列学习二

    查看JVM的运行参数 在有些时候我们需要查看JVM的运行参数,这个需求可能有以下两种情况: 1:运行Java命令时...

  • JVM学习系列学习三

    我们接着上一篇文章讲解: 堆、栈、永久区比较 Heap(堆内存): 在Java中,创建的所有引用对象类型,都在堆内...

  • 科学计算系列学习 02:Pandas

    科学计算系列学习 01:Numpy科学计算系列学习 02:Pandas科学计算系列学习 03:Matplotlib...

  • JVM系列学习随笔(一)

    虚拟机 JVM:JVM全称Java Virtual Machine(Java虚拟机),是一个虚构出来的计算机,作用...

  • 经济金融系列学习(完整版)

    目录 我们为什么要学习金融?经济金融系列学习:为什么我们要学习金融? 创业者眼中的新世界经济金融系列学习:创业者眼...

网友评论

    本文标题:JVM学习系列学习五

    本文链接:https://www.haomeiwen.com/subject/spmfhctx.html