jvisualvm使用

举报
小鲍侃java 发表于 2021/11/26 11:24:54 2021/11/26
【摘要】 一.​jvisualvm监控本地jvm 1.简单介绍jvm​eden:新生代s0:Survivor1区s1:Survivor2区old:老年代metaspace:元空间(替代永久代)2.监控本地项目在java安装目录下可以找到jvisualvm.exe。​打开后可以看到本地启动了四个项目。通过下图就可以看到jvm情况,可以明显分析出在堆中红框发生了内存溢出。3.下载插件下载Visual GC...

一.​jvisualvm监控本地jvm

 1.简单介绍jvm

  • eden:新生代
  • s0:Survivor1区
  • s1:Survivor2区
  • old:老年代
  • metaspace:元空间(替代永久代)

2.监控本地项目

在java安装目录下可以找到jvisualvm.exe。

打开后可以看到本地启动了四个项目。

通过下图就可以看到jvm情况,可以明显分析出在堆中红框发生了内存溢出。

3.下载插件

下载Visual GC。

 安装后,重启可以在选项栏中看到,可以看到界面更直观 ,分块更加详细了。

​二.jvisualvm分析jvm内存溢出

 在上文的jvisualvm只能体现出内存溢出,那么怎么能分析出哪里出问题了呢。

1.举个栗子

首先我们使用这段代码使内存溢出。

2.dump堆日志

在发生内存溢出时(如果发生gc了 那么将得不到溢出时的日志 ),点击堆 dump,会生成.hprof文件,查看.hprof文件就可以分析出内存溢出情况。(在dump时 应用会暂停)

3.安装MAT

我们需要一个软件查看.hprof文件,下载网址 Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation

解压后,双击可以打开。

4.查看.hprof文件

打开上文的.hprof文件。

会发现这里有一个program。

点击 See stacktrace ,会发现报错日志,发现已经分析出有问题的地方了。


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。