jmap, jhat命令
jmap命令有下面几种常用的用法
jmap [pid]
jmap -histo:live [pid] >a.log
jmap -dump:live,format=b,file=xxx.xxx [pid]
用得最多是后面两个。其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。
jmap查看各个代的内存使用
jmap 可以从 core dump文件或进程中获得内存的具体匹配情况,包括 Heap size, Perm size等等。
jmap命令格式:
jmap [ option ] <pid> | <executable core> | <[server-id@]remote-hostname-or-IP>
1)参数说明
pid:java进程 id
executable:产生 core dump的 java可执行程序
core:core dump文件
remote-hostname-or-IP:远程 debug服务的主机名或 ip
server-id:远程 debug服务的 id
2) option参数:
-heap
打印heap的概要信息,GC 使用的算法,heap的配置及使用情况 .
-histo[:live]
打印jvm heap 的直方图。输出类名、每个类的实例数目、对象占用大小。 VM的内部类名字开头会加上前缀 ”*”.
如果加上live 则只统计活的对象数量。
-dump:[live,]format=b,file=<filename>
使用hprof二进制形式,导出heap 内容到文件filename。
假如指定live 选项,那么只输出活的对象到文件 .
hprof二进制可用jhat命令查看,
jhat是sun 1.6及以上版本中自带的一个用于分析JVM 堆DUMP 文件的工具,基于此工具可分析JVM HEAP 中对象的内存占用情况
一般情况下,我们都会配置上-XX:+HeapDumpOnOutOfMemoryError,
然后使用MAT工具去分析(Memory Analyzer Tool ),MAT使用很简单。
-clstats
打印classload 和jvm heap 持久代的信息。
包含每个classloader 的名字、是否存活、地址、父 classloade、加载的 class数量、内部 String的数量和占用内存数。
使用 jmap -heap pid ,可以查看各个代的内存使用情况,如:New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的内存使用情况。
jmap -dump:format=b,file=heapdump.hprof <pid> ,导出heap dump到文件heapdump.hprof
最新文章
- [环境搭建] VS-Visual Studio-IIS Express 支持局域网访问
- phalcon: 多模块多表查找,多表sql
- [讨论] 这几天来封装Win7用户配置文件丢失的解决方法个人心得
- Android ThreadUtil 线程公共类,判断是否在主线程/ 子线程执行 相关操作
- dictionary 添加数据
- 转:Python 的 Socket 编程教程
- 用NSOperation和NSOperationQueue实现多线程编程
- hdu 4655 Cut Pieces
- 深入super,看Python如何解决钻石继承难题
- 指针参数的传递(节选 C++/C 高质量编程 林锐)
- [SOJ]连通性问题
- IAR for STM8 错误
- [SDOI 2012]Longge的问题
- Gradle 1.12翻译——第二十章. 构建环境
- javascript语法之with语句
- 关于多条数据转为json格式单次传输的问题 2017.05.27
- tp5 修改默认的分页url
- [python]使用virtualenvWrapper
- GIT 分支管理:多人协作
- (转).Net中自定义类作为Dictionary的key详解