JDK自带工具查看内存
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自带工具查看内存相关推荐
- JAVA内存分析:使用JDK自带工具进行内存和CPU分析及垃圾回收
JAVA内存分析:使用JDK自带工具进行内存和CPU分析及垃圾回收 JAVA内存分析一:基于dump内存溢出快照分析 JAVA内存分析二:idea集成jprofiler查看JVM内存使用情况 JAVA ...
- jvm调优 java_opt_Java-100天知识进阶-JVM调优工具-JDK自带工具-知识铺《八》
原标题:Java-100天知识进阶-JVM调优工具-JDK自带工具-知识铺<八> JVM 监控分析工具 一.JDK 自带工具 1. jconsole JDK/bin 目录下, jconso ...
- java 虚拟机(jvm)-06-JVM jdk 自带工具 jstack jconsole jvisualvm jmap jinfo
jdk 自带工具 在 java 安装目录 bin 下. 你可以看到对应的信息,这里有很多 java 为我们提供的工具. $ ls appletviewer.exe* java-rmi.exe* jav ...
- JDK自带工具keytool生成ssl证书(web服务https配置)
原文:https://www.cnblogs.com/zhangzb/p/5200418.html 前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl ...
- 使用JDK自带工具keytool生成ssl证书
使用JDK自带工具keytool生成ssl证书 HTTPS简介 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP ove ...
- JDK自带工具keytool生成ssl证书
前言: 因为公司项目客户要求使用HTTPS的方式来保证数据的安全,所以木有办法研究了下怎么生成ssl证书来使用https以保证数据安全. 百度了不少资料,看到JAVA的JDK自带生成SSL证书的工具: ...
- windows7内存诊断工具有用吗_Win7怎么使用自带工具进行内存检测?
电脑使用久了,总是会出现各种各样的问题,其中比较常见的就是内存问题了.出现内存问题,我们可以采用系统自带的工具进行内存检测,可是很多用户不知道Win7怎么使用自带工具进行内存检测,为此小编赶紧整理了以 ...
- java自带工具_深入了解Java JDK自带工具,包括javac、jar、jstack等,实用~
在Java JDK的安用装目录bin下,有一些有非常实用的小工具,可用于分析JVM初始配置.内存溢出异常等问题,我们接下来将对些常用的工具进行一些说明. JDK小工具简介 在JDK的bin目录下面有一 ...
- 利用JDK自带工具native2ascii 进行unicode编码和中文转换
背景:国际化资源文件翻译 将本地中文资源文件翻译为英文文件 在Eclipse打开的配置文件编码为Unicode,中文字符显示如下: 需要将中文显示出来,如果一行一行的人工翻译,有点Low(之前这么干过 ...
最新文章
- 10万现金+高薪offer!新网银行智能语音大赛火热进行中
- 关于 QAbstractItemModel 学习的一点分享
- 被3整除的子序列(简单dp)
- Angular单元测试里使用fixture.debugElement测试UI界面元素
- c语言静态成员变量重名会怎么样,C++中静态成员函数与静态成员变量(static )...
- jQuery中ajax请求的六种方法(三、五):$.getScript()方法
- MySQL中replace主键_Mysql中replace与replace into的用法讲解
- 之间有什么区别。 (点)和$(美元符号)?
- 商超小程序服务器配置,超市商超小程序在线开店的教程
- 关于北京摇号概率的相关计算
- 给select里面的option加入背景图片(select美化)
- 单片机第四次实验课——外部中断实验
- 读《枪炮,病菌和钢铁》
- HTML+CSS - 侧边导航栏
- 换行符后需要加逗号吗c语言,为什么大多数编程语言都在换行符之前而不是换行符之后使用逗号?...
- 【离散】如何利用顶点数求树叶或知树叶求顶点
- 近十年我国竞争情报综述(转载)
- loadrunner入门教程(10)--代理录制
- 怎么科学开奶,堵奶怎么办?
- GF(2^8)下查表实现多项式乘法