• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > java自带命令行工具jmap、jhat与jinfo的使用实例代码详解

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了java jmap,jmap,jmap dump,jmap命令,jmap heap等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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
</div>

如果指定的进程是在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
...

</div>

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

</div>

3.3-finalizerinfo

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

C:\Users\Administrator>jmap-finalizerinfo9208
AttachingtoprocessID9208,pleasewait...
Debuggerattachedsuccessfully.
Servercompilerdetected.
JVMversionis24.75-b04
Numberofobjectspendingforfinalization:0

</div>

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.

</div>

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
...

</div>

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.

</div>

接下来,就可以通过浏览器访问查看。http://localhost:8000/。

(3)jinfo

3.1作用

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

3.2使用

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

</div>

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中可以找到设置的地方

</div>

打印参数值

#值类型参数
C:\Users\Administrator>jinfo-flagNewSize9208
-XX:NewSize=1310720
 
#开关类型参数
C:\Users\Administrator>jinfo-flagPrintGC9208
-XX:-PrintGC
 
C:\Users\Administrator>jinfo-flagXmn9208
nosuchflag'Xmn'

</div>

可以总结出:-xms,-xmn系列参数不能通过j

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • java自带命令行工具jmap、jhat与jinfo的使用实例代码详解
  • java自带命令行工具jmap、jhat与jinfo的使用实例代码详解

相关文章

  • 2017-05-28Java正则表达式实现在文本中匹配查找换行符的方法【经典实例】
  • 2017-05-28通过一个命令轻松切换Java的版本
  • 2017-05-28java文件上传Demo(必看篇)
  • 2017-05-28Jaxb2实现JavaBean与xml互转的方法详解
  • 2017-05-28java连接Access数据库的方法
  • 2017-05-28Ubuntu快速安装jdk的教程
  • 2017-05-28Java数据结构之查找
  • 2017-05-28Spring Boot实战之netty-socketio实现简单聊天室(给指定用户推送消息)
  • 2017-05-28java中四种操作xml方式的比较
  • 2017-05-28java 中如何获取字节码文件的相关内容

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java使用字节流复制文件的方法
    • Java自定义异常_动力节点Java学院整理
    • 详解Mybatis的二级缓存配置
    • MyBatis拦截器:给参数对象属性赋值的实例
    • spring boot启动加载数据原理分析
    • Java实现单链表翻转实例代码
    • 深入理解java泛型详解
    • java基础-抽象类
    • 浅谈java中的一维数组、二维数组、三维数组、多维数组
    • java中四种操作xml方式的比较

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有