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.
接下来,就可以通过浏览器访问查看。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
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)
希望本篇文章对您有所帮助
我正在尝试将Visual Studio代码添加到命令行,以便通过键入“Code”打开项目 我已按照本页上的说明进行操作:https://code.visualstudio.com/docs/setup/mac它是有效的,但不是永久的。每次我重新启动终端时,命令行工具都会消失,并告诉我找不到命令。 我怎样才能永久地添加这个?我以前的编辑器是Atom,我不记得我是如何将其设置为从命令行打开的。 任何帮
简介 我们基于Python SDK实现了命令行工具cloudml,可以方便使用访问Xiaomi Cloud-ML服务。 由于sdk的接口更新较快,命令的使用方式可以通过-h选项获取最新的使用方法。 初始化配置文件 cloudml init 查看帮助 cloudml -h TrainJob相关命令 列举训练job cloudml jobs list 提交训练job cloudml jobs s
本文向大家介绍Django自定义manage命令实例代码,包括了Django自定义manage命令实例代码的使用技巧和注意事项,需要的朋友参考一下 manage.py是在我们创建Django项目的时候就自动生成在根目录下的一个命令行工具,它可以执行一些简单的命令,其功能是将Django project放到sys.path目录中,同时设置DJANGO_SETTINGS_MODULE环境变量为当前pr
工欲善其事,必先利其器。学好SQLite的命令行工具,对于我们学习SQLite本身而言是非常非常有帮助的。最基本的一条就是,它让我们学习SQLite的过程更加轻松愉快。言归正传吧,在SQLite的官方下载网站,提供了支持多个平台的命令行工具,使用该工具我们可以完成大多数常用的SQLite操作,就像sqlplus之于Oracle。以下列表给出了该工具的内置命令: 命令名 命令说明 .help 列出所
命令行工具 meteor help 获取 meteor 命令行使用帮助。运行 meteor help 会列出meteor所有命令。运行meteor help <command>会打印出关于meteor <command>的详细帮助。 meteor create <name> 创建一个名为<name>的子目录,并在里面新建一个Meteor应用。 met
web3j的完全jar文件分发包对每一次发布都提供命令行工具。命令行允许你从终端(terminal)使用web3j的一些功能: 这些工具提供: 钱包创建 钱包密码管理 从一个钱包转移到另一个钱包以太币 solidity智能合约封装包的产生 命令行工具可以从github项目存储库的releases页面下载zipfile/tarball包,或者通过源代码自己编译获得;OS X用户也可以通过Homebr