(1)JMAP

1.作用

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

2.使用jmap [ options ] pid

jmap [ options ] executable core

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>jmap 9208

Attaching to process ID 9208, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 24.75-b04

0x00000000623c0000      8016K   D:\Java\jdk1.7.0_75\jre\bin\server\jvm.dll

0x0000000062ba0000      840K    D:\Java\jdk1.7.0_75\jre\bin\msvcr100.dll

0x0000000062cc0000      144K    D:\Java\jdk1.7.0_75\jre\bin\sunec.dll

0x0000000062cf0000      68K     D:\Java\jdk1.7.0_75\jre\bin\nio.dll

0x0000000062d10000      100K    D:\Java\jdk1.7.0_75\jre\bin\net.dll

0x0000000062d30000      160K    D:\Java\jdk1.7.0_75\jre\bin\java.dll

0x00000000634d0000      84K     D:\Java\jdk1.7.0_75\jre\bin\zip.dll

0x0000000065950000      44K     D:\Java\jdk1.7.0_75\jre\bin\sunmscapi.dll

0x0000000065960000      60K     D:\Java\jdk1.7.0_75\jre\bin\verify.dll

0x0000000065970000      44K     D:\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.hprof 9208

Dumping heap to C:\Users\Administrator\9208_0413.hprof ...

Heap dump file created

3.3 -finalizerinfo

打印将要结束的对象的信息C:\Users\Administrator>jmap -finalizerinfo  9208

Attaching to process ID 9208, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 24.75-b04

Number of objects pending for finalization: 0

3.4 -heap

打印垃圾收集和heap摘要信息,以及生成-wise堆使用的堆摘要C:\Users\Administrator>jmap -heap 9208

Attaching to process ID 9208, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 24.75-b04

using thread-local object allocation.

Parallel GC with 4 thread(s)

Heap Configuration:

MinHeapFreeRatio = 0

MaxHeapFreeRatio = 100

MaxHeapSize      = 2124414976 (2026.0MB)

NewSize          = 1310720 (1.25MB)

MaxNewSize       = 17592186044415 MB

OldSize          = 5439488 (5.1875MB)

NewRatio         = 2

SurvivorRatio    = 8

PermSize         = 21757952 (20.75MB)

MaxPermSize      = 85983232 (82.0MB)

G1HeapRegionSize = 0 (0.0MB)

Heap Usage:

PS Young Generation

Eden Space:

capacity = 68157440 (65.0MB)

used     = 16646688 (15.875518798828125MB)

free     = 51510752 (49.124481201171875MB)

24.423875075120193% used

From Space:

capacity = 5242880 (5.0MB)

used     = 5228248 (4.986045837402344MB)

free     = 14632 (0.01395416259765625MB)

99.72091674804688% used

To Space:

capacity = 15728640 (15.0MB)

used     = 0 (0.0MB)

free     = 15728640 (15.0MB)

0.0% used

PS Old Generation

capacity = 88080384 (84.0MB)

used     = 27239848 (25.977943420410156MB)

free     = 60840536 (58.022056579589844MB)

30.9261231195359% used

PS Perm Generation

capacity = 22020096 (21.0MB)

used     = 15369592 (14.657585144042969MB)

free     = 6650504 (6.342414855957031MB)

69.7980244954427% used

10057 interned Strings occupying 867832 bytes.

3.5 -histo[:live]

打印堆的直方图num     #instances         #bytes  class name

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

...

877:             1             32  [Lcom.sun.jndi.ldap.pool.Pool;

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

879:             2             32  java.lang.Shutdown$Lock

880:             1             32  org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler

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

882:             1             32  java.lang.reflect.WeakCache$CacheKey

883:             1             32  java.text.FieldPosition

884:             1             32  java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl

885:             2             32  sun.security.x509.CertificateVersion

886:             2             32  [Lorg.apache.catalina.deploy.ContextEnvironment;

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

888:             1             32  sun.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 -port 8000  9208_0413.hprof

Reading from 9208_0413.hprof...

Dump file created Thu Apr 13 21:18:58 CST 2017

Snapshot read, resolving...

Resolving 389761 objects...

Chasing references, expect 77 dots..........................................................................

Eliminating duplicate references............................................................................

Snapshot resolved.

Started HTTP server on port 8000

Server is ready.

(3)jinfo

3.1作用

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

3.2使用jinfo [ option ] pid

jinfo [ option ] executable core

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 -flags 9208

Attaching to process ID 9208, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 24.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 -flag NewSize 9208

-XX:NewSize=1310720

#开关类型参数

C:\Users\Administrator>jinfo -flag PrintGC 9208

-XX:-PrintGC

C:\Users\Administrator>jinfo -flag Xmn 9208

no such flag 'Xmn'

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

设置参数值C:\Users\Administrator>jinfo -flag PrintGC 9208

-XX:-PrintGC

C:\Users\Administrator>jinfo -flag +PrintGC 9208

C:\Users\Administrator>jinfo -flag PrintGC 9208

-XX:+PrintGC

//2 windows环境总是失败

C:\Users\Administrator>jinfo -flag PermSize=21750000 9208

Exception in thread "main" java.io.IOException: Command failed in target VM

at sun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java:112)

at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:217)

at sun.tools.attach.HotSpotVirtualMachine.setFlag(HotSpotVirtualMachine.java:190)

at sun.tools.jinfo.JInfo.flag(JInfo.java:123)

at sun.tools.jinfo.JInfo.main(JInfo.java:76)

java jhat_java自带命令行工具(jmap,jhat,jinfo)相关推荐

  1. Java基础JDK命令行工具(jps,jstat,jinfo,jmap,jhat,jstack)

    本篇博文目录: 前言 1.Java的JDK工具 2.jps (JVM Process Status)工具 3.jstat(JVM Statistics Monitoring Tool) 4.jinfo ...

  2. 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能...

    虚拟机系列文章 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析 深入理解 Java 虚拟机(第二弹) - 常用 vm 参数分析 深入理解 Java 虚拟机-如何利用 Visual ...

  3. 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:打卡活动第二期来啦,100% 能获得奖品个人原创+1博客:点击前往,查看更多 虚拟机系列文章 深入理解 Java ...

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

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

  5. Java内存泄露和内存溢出、JVM命令行工具、.JDK可视化工具、Java Class文件

    1.Java内存泄露和内存溢出对比 1.1 Java 内存泄露 内存泄露是指一个不再被程序使用的对象或变量还在内存中占用空间. 1.1.1判断内存空间是否符合垃圾回收的标准 在Java语言中,判断一个 ...

  6. jdk自带常用命令行工具使用

    转自:http://blog.csdn.net/winwill2012/article/details/46364923 jps命令使用 jps命令类似于Linux下的ps命令,用于列出当前正在运行的 ...

  7. java性能调试命令_性能测试必备监控技能jvm之jdk命令行工具篇16

    3.png 前言 对于JVM的性能监控,主要注意以下关键参数,通过jdk自带的命令行工具,即可查看相关参数,从而分析系统或目标服务程序中存在的性能瓶颈 jps JVM Process Status T ...

  8. java jamp cmd,Java命令行监控工具jmap,jstack...

    原标题:Java命令行监控工具jmap,jstack... Java命令行监控工具(jmap,jstack,jstat,jinfo,jps) 项目部署上线之后,线上项目是不能轻易修改的,定位问题的难度 ...

  9. 面试官:你用过哪些JDK自带的命令行工具

    本文基于HotSpot虚拟机,JDK版本1.8.0_171,windows系统 目录 一.jps:虚拟机进程状况工具 二.jstat:虚拟机统计信息监视工具 三.jmap:Java内存映像工具 四.j ...

最新文章

  1. Kotlin学习笔记-基础语法
  2. matlab学习札记.20210122
  3. 线程同步 生产者消费者 java_Java线程同步:生产者-消费者 模型(代码示例)
  4. SSH报错: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  5. springcloud 子项目怎么导入_「 从0到1学习微服务SpringCloud 」09 补充篇-maven父子模块项目...
  6. c语言程序设计对称字符串,C语言程序设计(字符串)
  7. 如何在下一个网页设计项目中使用Google字体
  8. 刷新所有视图存储过程
  9. 若依启动sentinel教程
  10. 慕课python第六周测验答案_大学慕课2020Python编程基础章节测验答案
  11. C++ 对象间通信框架 V2.0 ××××××× 之(五)
  12. IPOP-CMA-ES:一种重启CMA-ES
  13. VS2010 SP1 安装慢的原因
  14. Parasoft c++test安装使用导引
  15. oracle sqlt(sqltxplain) 诊断工具
  16. Windows Installer服务总是自动关闭导致无法安装在win10上安装英伟达显卡驱动的解决方案...
  17. Android开发之指南针
  18. 身份证实名认证API接口
  19. lsf服务器窗口显示,LSF指定进程提交到指定QUEUES中
  20. kali配置静态IP地址

热门文章

  1. LIN 总线开发知识总结
  2. 简述新手是否适合成享汇
  3. 10.20stark组件已经完工
  4. 软考A计划-电子商务设计师-电子商务相关技术与应用基础知识
  5. 怎样获得WIFI的密码
  6. Postgresql实现动态SQL语句
  7. php获取mac_ip地址,如何获取PHP中连接的客户端的MAC和IP地址?
  8. C语言 输出字符01
  9. Tomcat 端口配置
  10. php isset函数的功能,你真的懂了吗