源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-01-06 00:25 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java自带命令行工具jmap、jhat与jinfo的使用实例代码详解
[b]java自带命令行工具(jmap,jhat,jinfo)[/b] [b](1)JMAP[/b] [b]1.作用[/b] 打印进程,core文件,和远程进程的共享对象存储map或堆存储器的详细信息。 [b]2.使用[/b]
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。 [b]3.参数选项[/b] 3.1 当不使用选项,该jmap命令打印共享对象映射 如
C:UsersAdministrator>jmap9208
AttachingtoprocessID9208,pleasewait...
Debuggerattachedsuccessfully.
Servercompilerdetected.
JVMversionis24.75-b04
0x00000000623c00008016KD:Javajdk1.7.0_75jrebinserverjvm.dll
0x0000000062ba0000840KD:Javajdk1.7.0_75jrebinmsvcr100.dll
0x0000000062cc0000144KD:Javajdk1.7.0_75jrebinsunec.dll
0x0000000062cf000068KD:Javajdk1.7.0_75jrebinnio.dll
0x0000000062d10000100KD:Javajdk1.7.0_75jrebinnet.dll
0x0000000062d30000160KD:Javajdk1.7.0_75jrebinjava.dll
0x00000000634d000084KD:Javajdk1.7.0_75jrebinzip.dll
0x000000006595000044KD:Javajdk1.7.0_75jrebinsunmscapi.dll
0x000000006596000060KD:Javajdk1.7.0_75jrebinverify.dll
0x000000006597000044KD:Javajdk1.7.0_75jrebinmanagement.dll
...
3.2 [code]-dump:[live,] format=b, file=filename[/code] 转储Java堆hprof二进制格式。指定live,标识转储active状态的对象。生成的文件可以由jhat命令查看。
C:UsersAdministrator>jmap-dump:format=b,file=9208_0413.hprof9208
DumpingheaptoC:UsersAdministrator9208_0413.hprof...
Heapdumpfilecreated
[b]3.3-finalizerinfo[/b] 打印将要结束的对象的信息
C:UsersAdministrator>jmap-finalizerinfo9208
AttachingtoprocessID9208,pleasewait...
Debuggerattachedsuccessfully.
Servercompilerdetected.
JVMversionis24.75-b04
Numberofobjectspendingforfinalization:0
[b]3.4 -heap[/b] 打印垃圾收集和heap摘要信息,以及生成-wise 堆使用的堆摘要
C:UsersAdministrator>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.
[b]3.5 -histo[:live][/b] 打印堆的直方图
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
...
[b]3.6 -clstats[/b] java 堆的wise统计。1.7.0_75不支持该项 (2)jhat 2.1作用 分析Java堆。该jhat命令解析Java堆转储文件并启动Web服务器。jhat命令可以让你浏览堆转储。支持OQL语法。 2.2使用 [code]jhat [ options ] heap-dump-file[/code] 2.3参数说明 [code]1.-stack false|true[/code] 关闭跟踪对象分配调用堆栈。默认值是true。 [code]-refs false|true[/code] 关闭对象的引用的跟踪。默认为true。 [code]-port port-number[/code] 设置端口的jhatHTTP服务器。默认值是7000。 [code]-exclude exclude-file[/code] 指定列出了应当从可及的对象查询排除数据成员的文件 [code]-baseline exclude-file[/code] 指定基准堆转储。在具有相同的对象ID两个堆转储对象被标记为不是新对象。这是用于比较两个不同的堆转储有用。 [code]-debug int[/code] 0级表示没有调试输出
C:UsersAdministrator>jhat-port80009208_0413.hprof
Readingfrom9208_0413.hprof...
DumpfilecreatedThuApr1321:18:58CST2017
Snapshotread,resolving...
Resolving389761objects...
Chasingreferences,expect77dots..........................................................................
Eliminatingduplicatereferences............................................................................
Snapshotresolved.
StartedHTTPserveronport8000
Serverisready.
接下来,就可以通过浏览器访问查看。[url=http://localhost:8000/]http://localhost:8000/[/url]。 (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:既打印命令行标志和系统属性键值对。 [code]-flag name[/code] 打印名和指定的命令行标志的值。 [code]-flag [+|-]name[/code] 开启或禁止指定的布尔命令行标志。 [code]-flag name=value[/code] 设置指定的命令行标志为指定值。 [code]-flags[/code] 打印命令行标志传递给JVM。 [code]-sysprops[/code] 打印Java系统属性键值对。 [b]打印进程的命令行参数[/b]
C:UsersAdministrator>jinfo-flags9208
AttachingtoprocessID9208,pleasewait...
Debuggerattachedsuccessfully.
Servercompilerdetected.
JVMversionis24.75-b04
 -Djava.util.logging.config.file=D:apache-tomcat-7.0.67conflogging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.endorsed.dirs=D:apache-tomcat-7.0.67endorsed-Dcatalina.base=D:apache-tomcat-7.0.67-Dcatalina.home=D:apache-tomcat-7.0.67-Djava.io.
tmpdir=D:apache-tomcat-7.0.67temp
#在catalina.sh中可以找到设置的地方
[b]打印参数值[/b]
#值类型参数
C:UsersAdministrator>jinfo-flagNewSize9208
-XX:NewSize=1310720
 
#开关类型参数
C:UsersAdministrator>jinfo-flagPrintGC9208
-XX:-PrintGC
 
C:UsersAdministrator>jinfo-flagXmn9208
nosuchflag'Xmn'
可以总结出:-xms,-xmn系列参数不能通过jinfo指定或打印;jinfo命令作用于-XX:***格式的参数。 [b]设置参数值[/b]
C:UsersAdministrator>jinfo-flagPrintGC9208
-XX:-PrintGC
 
C:UsersAdministrator>jinfo-flag+PrintGC9208
 
C:UsersAdministrator>jinfo-flagPrintGC9208
-XX:+PrintGC
//2windows环境总是失败
 
C:UsersAdministrator>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)
希望本篇文章对您有所帮助
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部