


Detailed explanation of how to share Java's own command line tools jmap, jhat and jinfo
本篇文章主要通过代码实例对java自带命令行工具jmap、jhat与jinfo的使用做出了详解,需要的朋友可以参考下
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)
The above is the detailed content of Detailed explanation of how to share Java's own command line tools jmap, jhat and jinfo. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP and Python each have their own advantages and are suitable for different scenarios. 1.PHP is suitable for web development and provides built-in web servers and rich function libraries. 2. Python is suitable for data science and machine learning, with concise syntax and a powerful standard library. When choosing, it should be decided based on project requirements.

Capsules are three-dimensional geometric figures, composed of a cylinder and a hemisphere at both ends. The volume of the capsule can be calculated by adding the volume of the cylinder and the volume of the hemisphere at both ends. This tutorial will discuss how to calculate the volume of a given capsule in Java using different methods. Capsule volume formula The formula for capsule volume is as follows: Capsule volume = Cylindrical volume Volume Two hemisphere volume in, r: The radius of the hemisphere. h: The height of the cylinder (excluding the hemisphere). Example 1 enter Radius = 5 units Height = 10 units Output Volume = 1570.8 cubic units explain Calculate volume using formula: Volume = π × r2 × h (4

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

The reasons why PHP is the preferred technology stack for many websites include its ease of use, strong community support, and widespread use. 1) Easy to learn and use, suitable for beginners. 2) Have a huge developer community and rich resources. 3) Widely used in WordPress, Drupal and other platforms. 4) Integrate tightly with web servers to simplify development deployment.
