java自带命令行工具(jmap,jhat,jinfo)

(1)JMAP

1.作用

打印进程,core文件,和远程进程的共享对象存储map或堆存储器的详细信息。

2.使用

jmap[options]pid

jmap[options]executablecore

jmap[options][pid]server-id@]remote-hostname-or-IP

如果指定的进程是在64位Java虚拟机(JVM)上运行,那么你可能需要指定-J-d64选项,例如:jmap -J-d64 -heap pid。

3.参数选项

3.1

当不使用选项,该jmap命令打印共享对象映射

C:\Users\Administrator>jmap9208

AttachingtoprocessID9208,pleasewait...

Debuggerattachedsuccessfully.

Servercompilerdetected.

JVMversionis24.75-b04

0x00000000623c00008016KD:\Java\jdk1.7.0_75\jre\bin\server\jvm.dll

0x0000000062ba0000840KD:\Java\jdk1.7.0_75\jre\bin\msvcr100.dll

0x0000000062cc0000144KD:\Java\jdk1.7.0_75\jre\bin\sunec.dll

0x0000000062cf000068KD:\Java\jdk1.7.0_75\jre\bin\nio.dll

0x0000000062d10000100KD:\Java\jdk1.7.0_75\jre\bin\net.dll

0x0000000062d30000160KD:\Java\jdk1.7.0_75\jre\bin\java.dll

0x00000000634d000084KD:\Java\jdk1.7.0_75\jre\bin\zip.dll

0x000000006595000044KD:\Java\jdk1.7.0_75\jre\bin\sunmscapi.dll

0x000000006596000060KD:\Java\jdk1.7.0_75\jre\bin\verify.dll

0x000000006597000044KD:\Java\jdk1.7.0_75\jre\bin\management.dll

...

3.2

-dump:[live,] format=b, file=filename

转储Java堆hprof二进制格式。指定live,标识转储active状态的对象。生成的文件可以由jhat命令查看。

C:\Users\Administrator>jmap-dump:format=b,file=9208_0413.hprof9208

DumpingheaptoC:\Users\Administrator\9208_0413.hprof...

Heapdumpfilecreated

3.3-finalizerinfo

打印将要结束的对象的信息

C:\Users\Administrator>jmap-finalizerinfo9208

AttachingtoprocessID9208,pleasewait...

Debuggerattachedsuccessfully.

Servercompilerdetected.

JVMversionis24.75-b04

Numberofobjectspendingforfinalization:0

3.4 -heap

打印垃圾收集和heap摘要信息,以及生成-wise 堆使用的堆摘要

C:\Users\Administrator>jmap-heap9208

AttachingtoprocessID9208,pleasewait...

Debuggerattachedsuccessfully.

Servercompilerdetected.

JVMversionis24.75-b04

usingthread-localobjectallocation.

ParallelGCwith4thread(s)

HeapConfiguration:

MinHeapFreeRatio=0

MaxHeapFreeRatio=100

MaxHeapSize=2124414976(2026.0MB)

NewSize=1310720(1.25MB)

MaxNewSize=17592186044415MB

OldSize=5439488(5.1875MB)

NewRatio=2

SurvivorRatio=8

PermSize=21757952(20.75MB)

MaxPermSize=85983232(82.0MB)

G1HeapRegionSize=0(0.0MB)

HeapUsage:

PSYoungGeneration

EdenSpace:

capacity=68157440(65.0MB)

used=16646688(15.875518798828125MB)

free=51510752(49.124481201171875MB)

24.423875075120193%used

FromSpace:

capacity=5242880(5.0MB)

used=5228248(4.986045837402344MB)

free=14632(0.01395416259765625MB)

99.72091674804688%used

ToSpace:

capacity=15728640(15.0MB)

used=0(0.0MB)

free=15728640(15.0MB)

0.0%used

PSOldGeneration

capacity=88080384(84.0MB)

used=27239848(25.977943420410156MB)

free=60840536(58.022056579589844MB)

30.9261231195359%used

PSPermGeneration

capacity=22020096(21.0MB)

used=15369592(14.657585144042969MB)

free=6650504(6.342414855957031MB)

69.7980244954427%used

10057internedStringsoccupying867832bytes.

3.5 -histo[:live]

打印堆的直方图

num#instances#bytesclassname

----------------------------------------------

...

877:132[Lcom.sun.jndi.ldap.pool.Pool;

878:232com.sun.org.apache.xerces.internal.impl.dv.dtd.ENTITYDatatypeValidator

879:232java.lang.Shutdown$Lock

880:132org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler

881:232com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver

882:132java.lang.reflect.WeakCache$CacheKey

883:132java.text.FieldPosition

884:132java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl

885:232sun.security.x509.CertificateVersion

886:232[Lorg.apache.catalina.deploy.ContextEnvironment;

887:132[Lorg.apache.tomcat.util.net.AbstractEndpoint$Acceptor$AcceptorState;

888:132sun.nio.cs.StandardCharsets

...

3.6 -clstats

java 堆的wise统计。1.7.0_75不支持该项

(2)jhat

2.1作用

分析Java堆。该jhat命令解析Java堆转储文件并启动Web服务器。jhat命令可以让你浏览堆转储。支持OQL语法。

2.2使用

jhat [ options ] heap-dump-file

2.3参数说明

1.-stack false|true

关闭跟踪对象分配调用堆栈。默认值是true。

-refs false|true

关闭对象的引用的跟踪。默认为true。

-port port-number

设置端口的jhatHTTP服务器。默认值是7000。

-exclude exclude-file

指定列出了应当从可及的对象查询排除数据成员的文件

-baseline exclude-file

指定基准堆转储。在具有相同的对象ID两个堆转储对象被标记为不是新对象。这是用于比较两个不同的堆转储有用。

-debug int

0级表示没有调试输出

C:\Users\Administrator>jhat-port80009208_0413.hprof

Readingfrom9208_0413.hprof...

DumpfilecreatedThuApr1321:18:58CST2017

Snapshotread,resolving...

Resolving389761objects...

Chasingreferences,expect77dots..........................................................................

Eliminatingduplicatereferences............................................................................

Snapshotresolved.

StartedHTTPserveronport8000

Serverisready.

(3)jinfo

3.1作用

生成的配置信息。如果指定的进程是在64位JVM上运行,那么你可能需要指定-J-d64选项

3.2使用

jinfo[option]pid

jinfo[option]executablecore

jinfo[option][servier-id]remote-hostname-or-IP

3.3选项参数

no-option:既打印命令行标志和系统属性键值对。

-flag name

打印名和指定的命令行标志的值。

-flag [+|-]name

开启或禁止指定的布尔命令行标志。

-flag name=value

设置指定的命令行标志为指定值。

-flags

打印命令行标志传递给JVM。

-sysprops

打印Java系统属性键值对。

打印进程的命令行参数

C:\Users\Administrator>jinfo-flags9208

AttachingtoprocessID9208,pleasewait...

Debuggerattachedsuccessfully.

Servercompilerdetected.

JVMversionis24.75-b04

-Djava.util.logging.config.file=D:\apache-tomcat-7.0.67\conf\logging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

-Djava.endorsed.dirs=D:\apache-tomcat-7.0.67\endorsed-Dcatalina.base=D:\apache-tomcat-7.0.67-Dcatalina.home=D:\apache-tomcat-7.0.67-Djava.io.

tmpdir=D:\apache-tomcat-7.0.67\temp

#在catalina.sh中可以找到设置的地方

打印参数值

#值类型参数

C:\Users\Administrator>jinfo-flagNewSize9208

-XX:NewSize=1310720

#开关类型参数

C:\Users\Administrator>jinfo-flagPrintGC9208

-XX:-PrintGC

C:\Users\Administrator>jinfo-flagXmn9208

nosuchflag'Xmn'

可以总结出:-xms,-xmn系列参数不能通过jinfo指定或打印;jinfo命令作用于-XX:***格式的参数。

设置参数值

C:\Users\Administrator>jinfo-flagPrintGC9208

-XX:-PrintGC

C:\Users\Administrator>jinfo-flag+PrintGC9208

C:\Users\Administrator>jinfo-flagPrintGC9208

-XX:+PrintGC

//2windows环境总是失败

C:\Users\Administrator>jinfo-flagPermSize=217500009208

Exceptioninthread"main"java.io.IOException:CommandfailedintargetVM

atsun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java:112)

atsun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:217)

atsun.tools.attach.HotSpotVirtualMachine.setFlag(HotSpotVirtualMachine.java:190)

atsun.tools.jinfo.JInfo.flag(JInfo.java:123)

atsun.tools.jinfo.JInfo.main(JInfo.java:76)

希望本篇文章对您有所帮助

java jhat_java自带命令行工具jmap、jhat与jinfo的使用实例代码详解相关推荐

  1. java jhat_java自带命令行工具(jmap,jhat,jinfo)

    (1)JMAP 1.作用 打印进程,core文件,和远程进程的共享对象存储map或堆存储器的详细信息. 2.使用jmap [ options ] pid jmap [ options ] execut ...

  2. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...

  3. java内存溢出排查jstack_Java命令行监控工具(jmap,jstack,jstat,jinfo,jps)

    项目部署上线之后,线上项目是不能轻易修改的,定位问题的难度也会变大.因此监控是非常重要的一个环节,有了监控,我们才能更好的定位系统中的问题,从而排查.监控的工具有很多种, 但是java自带的命令行监控 ...

  4. jdk命令行工具(jps+jstat+jinfo+jmap+jstack)

    jps:虚拟机进程状况工具 可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(main class,class()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID. jps命令格式: jps ...

  5. 【Android NDK 开发】NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )

    文章目录 一.从 Tombstone 报错日志中查找报错动态库 二.addr2line 命令行工具使用 64 位动态库使用的 aarch64-linux-android-addr2line.exe 工 ...

  6. Java学习第八天<什么是方法><方法的定义和调用><方法的重载><命令行传参><可变参数><递归详解>

    什么是方法 System.out.println(); 调用系统类里的标准输出对象(out)中的方法println public class Demo01 {//main 方法public stati ...

  7. npm、pnpm和yarn使用(官网、安装、命令行、上传自己的包、包版本号详解、更新卸载包、查看所有版本、同等依赖peer、可选依赖optional)

    目录 npm 官网 npm install packageName npm i packagename@版本号 安装git上发布的包 npm ci 注意(对比npm i) npm outdated n ...

  8. mysql删除所有记录命令行_mysql表的清空、删除和修改操作详解

    一.清除mysql表中数据 delete from 表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也 ...

  9. python命令行窗口最大化快捷键_PyCharm 在Windows的有用快捷键详解

    前言 网上关于PyCharm快捷键的文章数不胜数,但是我发现有以下几个缺陷: 具体基于哪个配置? 因为Windows / Mac 的配置各不同, 而Windows 下面是基于XWin 还是 Eclip ...

  10. java多线程代码_java多线程实例代码详解

    原文:http://blog.csdn.net/paranoidyang/article/details/70184523 作者:Paranoidyang 线程与进程的区别 (1)程序是一段静态的代码 ...

最新文章

  1. Tensorflow【实战Google深度学习框架】TFLearn大宝剑
  2. hash table(开放寻址法-线性探查实现的哈希表)
  3. cad动态块制作翻转_定制橱柜家具中CAD门型动态块制作方式图文讲解加视频
  4. charles 华为手机使用_华为手机EMUI9.0健康使用手机怎么用?如何控制手机使用时长?...
  5. Oracle在rownum使用结果集排序
  6. 二十三、常用的标签:见源码
  7. 5.PHP 命令行模式
  8. python plot坐标轴_修改python plot折线图的坐标轴刻度方法
  9. Vmware+Virtualbox+Ubuntu+debian+USB转串口+kermit
  10. 常用 Jacobi 行列式 | 重积分变量替换
  11. linux设备驱动模型架构分析 一
  12. 视频 | 计算万物的理论
  13. 想学python但是有好多英文不认识?python常用英文单词都在这
  14. SpringBoot多模块项目如何扫描全局mapper接口和mapper.xml文件
  15. JAVA 小易爱回文
  16. Win32_CDROMDrive 光驱 的参数说明
  17. 第9周--项目1-Complex类
  18. 面试题--5个数能组成多少中不同的二叉搜索树的结构--卡特兰数
  19. python词语匹配相似度_python文本相似度计算
  20. 我的同学聚会--性格决定命运[转载]

热门文章

  1. 城市公交类毕业论文文献都有哪些?
  2. 【win10 cuda pytorch】从无到有配置gpu运算pytorch的极度详细完整方法教程(包括各种坑),网上其他方法基本可行性不高
  3. 【智能无线小车系列八】在树莓派上使用USB摄像头
  4. 怎样把多个excel文件合并成一个
  5. 关于matlab表情包,matlab表情包 - matlab微信表情包 - matlabQQ表情包 - 发表情 fabiaoqing.com...
  6. 2016春招腾讯笔试题
  7. 视频教程-网页设计速成之Dreamweaver-Dreamweaver
  8. 电商业务中多平台订单与全局库存管理
  9. OpenFeign实现微服务间的文件下载
  10. sw与matlab连接_solidworks与matlab联合仿真simMechnics下载及安装