JDK自带工具查看内存

​ 今天维护之前写的一个项目,在本地跑一会出现java.lang.OutOfMemoryError: PermGen space

所以这里说一下怎么解决这个问题,以及如何查看内存使用情况,虚拟机的其他情况其他的地方说。

PermGen space 全称是Permanent Generation space ,是指内存的永久保存区域

这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行预编译的时候。

命令行模式

1.首先通过jps 查看java进程,可以找到对应的pid,通过pid可以进行查看当前进程的内存使用情况

2.jstat -gccapacity 4316[进程pid] 查看vm中内存对象的使用和占用大小。

PGCMN显示最小的perm的内存,PGCMX显示最大的perm的内存,PGC是当前新生成的perm内存占用量,PC是当前perm内存占用量。

jstat -gcutil 4316 是查看GC汇总统计。P是perm占用比。

这两个命令只是简单的查看内存运行情况,能知道运行的大概情况

jstat -gcutil 4316 10000[ms] 6[次] 一定时间执行一次查看内存情况,可以通过操作下程序观察内存情况

jstat命令是用于监控虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。

3.jps -v 查看进程的jvm参数


4.输入jmap -heap 5628[pid]可以查看内存使用情况

这种比上面那些命令我觉得更直观方便些。这里看到MaxPermSize最大才82M,后面会进行修改,内存溢出问题就解决了

图形界面模式

1.jconsole

在cmd输入jconsole可以查看进程的内存使用情况,也可以在bin目录中找到这个程序,jconsole是jdk自带的内存分析工具

2.jvisualvm

在cmd输入jvisualvm可以进入jdk另外一个自带的内存分析工具,也可以在bin目录中找到这个程序,可以看做是jconsole的升级版,可以分析dump

[外链图片转存失败(img-G6mguxPV-1564584979185)(file:///C:/Users/hejiahao/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg)]

jmap -dump:format=b,file=xxxx.dump[文件名,*.hprof也行] 4316[pid]生成对应进程的dump文件,可以通过jvisualvm打开dump查看情况。点击文件–>装入–>文件类型选dump。Dump里面可以查看哪些类占用的资源较多

在eclipse中的运行配置中添加运行参数,-XX:+HeapDumpOnOutOfMemoryError是当发生内存溢出的时候生成dump文件,然后可以使用jvisualvm打开文件进行分析。

修改后可以输入jmap -heap pid可以看到我们修改的地方已经改变

当然也可以在jvisualvm中查看改变的情况

JDK自带工具查看内存相关推荐

  1. JAVA内存分析:使用JDK自带工具进行内存和CPU分析及垃圾回收

    JAVA内存分析:使用JDK自带工具进行内存和CPU分析及垃圾回收 JAVA内存分析一:基于dump内存溢出快照分析 JAVA内存分析二:idea集成jprofiler查看JVM内存使用情况 JAVA ...

  2. jvm调优 java_opt_Java-100天知识进阶-JVM调优工具-JDK自带工具-知识铺《八》

    原标题:Java-100天知识进阶-JVM调优工具-JDK自带工具-知识铺<八> JVM 监控分析工具 一.JDK 自带工具 1. jconsole JDK/bin 目录下, jconso ...

  3. java 虚拟机(jvm)-06-JVM jdk 自带工具 jstack jconsole jvisualvm jmap jinfo

    jdk 自带工具 在 java 安装目录 bin 下. 你可以看到对应的信息,这里有很多 java 为我们提供的工具. $ ls appletviewer.exe* java-rmi.exe* jav ...

  4. JDK自带工具keytool生成ssl证书(web服务https配置)

    原文:https://www.cnblogs.com/zhangzb/p/5200418.html 前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl ...

  5. 使用JDK自带工具keytool生成ssl证书

    使用JDK自带工具keytool生成ssl证书 HTTPS简介 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP ove ...

  6. JDK自带工具keytool生成ssl证书

    前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全. 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具: ...

  7. windows7内存诊断工具有用吗_Win7怎么使用自带工具进行内存检测?

    电脑使用久了,总是会出现各种各样的问题,其中比较常见的就是内存问题了.出现内存问题,我们可以采用系统自带的工具进行内存检测,可是很多用户不知道Win7怎么使用自带工具进行内存检测,为此小编赶紧整理了以 ...

  8. java自带工具_深入了解Java JDK自带工具,包括javac、jar、jstack等,实用~

    在Java JDK的安用装目录bin下,有一些有非常实用的小工具,可用于分析JVM初始配置.内存溢出异常等问题,我们接下来将对些常用的工具进行一些说明. JDK小工具简介 在JDK的bin目录下面有一 ...

  9. 利用JDK自带工具native2ascii 进行unicode编码和中文转换

    背景:国际化资源文件翻译 将本地中文资源文件翻译为英文文件 在Eclipse打开的配置文件编码为Unicode,中文字符显示如下: 需要将中文显示出来,如果一行一行的人工翻译,有点Low(之前这么干过 ...

最新文章

  1. 10万现金+高薪offer!新网银行智能语音大赛火热进行中
  2. 关于 QAbstractItemModel 学习的一点分享
  3. 被3整除的子序列(简单dp)
  4. Angular单元测试里使用fixture.debugElement测试UI界面元素
  5. c语言静态成员变量重名会怎么样,C++中静态成员函数与静态成员变量(static )...
  6. jQuery中ajax请求的六种方法(三、五):$.getScript()方法
  7. MySQL中replace主键_Mysql中replace与replace into的用法讲解
  8. 之间有什么区别。 (点)和$(美元符号)?
  9. 商超小程序服务器配置,超市商超小程序在线开店的教程
  10. 关于北京摇号概率的相关计算
  11. 给select里面的option加入背景图片(select美化)
  12. 单片机第四次实验课——外部中断实验
  13. 读《枪炮,病菌和钢铁》
  14. HTML+CSS - 侧边导航栏
  15. 换行符后需要加逗号吗c语言,为什么大多数编程语言都在换行符之前而不是换行符之后使用逗号?...
  16. 【离散】如何利用顶点数求树叶或知树叶求顶点
  17. 近十年我国竞争情报综述(转载)
  18. loadrunner入门教程(10)--代理录制
  19. 怎么科学开奶,堵奶怎么办?
  20. GF(2^8)下查表实现多项式乘法

热门文章

  1. 存储器与CPU连接译码驱动方式
  2. ubunt linux解压gz,ubuntu解压命令
  3. 如何编译门禁APP,人脸识别功能运行
  4. QQ直接跳过原手机验证更换密保手机和绑定手机号
  5. 数据库系统原理与应用教程(037)—— MySQL 的索引(三):删除索引
  6. Matlab使用符号对象求二元函数积分并做图
  7. Lyapunov判稳第一法
  8. 如何查看电脑是否被黑
  9. Vue 2 中,使用Vite作为前端构建开发工具,替代webpack(一)——vite.config.js配置文件
  10. 机器学习线性回归Matlab实现(附数据集)