`

Java常用命令(工具)

    博客分类:
  • Java
阅读更多
启动参数加上-XX:+HeapDumpOnOutOfMemoryError,使在内存溢出时创建dump文件。
 
打开Java监视和管理控制台: jconsole
打开Java VisualVM: jvisualvm
查看Java进程号: jps -v
进行thread dump: jstack
显示Java系统属性、JVM参数等配置信息: jinfo -sysprops pid
 
调试工具:    jdb

1. 开启jdb,有2种方式:

1) 另开一个JVM进行调试: 

jdb ClassName

2) 在已存在的JVM中进行调试:

1.进程启动命令:
java -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=y ClassName
或者
java -Xdebug -Xrunjdwp:transport=dt_socket,address=jdbconn,server=y,suspend=n
2.进程启动后进行jdb:
jdb -attach jdbconn 

其中:
transport 指定调试数据的传送方式:

dt_socket是指用SOCKET模式;

dt_shmem指用共享内存方式,dt_shmem只适用于Windows平台(windows平台只能用dt_shmem方式,用eclipse远程调试则不限);

suspend 指定是否在调试客户端建立起来后再执行JVM。

其他参数:

onthrow 指定当产生该类型的Exception时,JVM就会中断下来,进行调式。该参数可选。
launch 指定当JVM被中断下来时执行的可执行程序。该参数可选。
onuncaught(=y或n) 指定出现uncaught exception 后,是否中断JVM的执行。该参数可选。

 

 

2. jdb基本命令

1) run 开启jdb并设置断点后,启动执行app。
2) stop at ClassName:linenum 在第linenum行设置断点
3) stop in ClassName.methodName 设置方法断点
4) stop in ClassName.methodName(int, java.lang.String) 当具有overloaded方法时,需指定方法参数类型

5) cont 继续运行直到下个断点

6) step  执行当前行

7) next 步进一行

8) print obj  输出变量值

9) catch ExceptionClassName  当发生指定异常时stop

10) ignore 取消catch命令的效果

11) exit  退出jdb

完整命令如下图:

 
 

 

使用 jmap jhat 来监控内存:

1) jmap -dump:live,format=b,file=dumpfile pid

2) jmap -histo pid  查看JVM堆中对象详细占用情况

3) jhat -J-mx512m dumpfile

然后会提示类似如下:

 

Reading from e:/heap2.tmp...
Dump file created Thu Mar 21 15:29:59 CST 2013
Snapshot read, resolving...
Resolving 586350 objects...
Chasing references, expect 117 dots.............................................
........................................................................
Eliminating duplicate references................................................
.....................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

 然后可以访问以下地址,查看相关信息:

 http://localhost:7000/ 

 http://localhost:7000/histo/

 http://localhost:7000/showInstanceCounts/

 http://localhost:7000/showInstanceCounts/includePlatform/

 http://localhost:7000/oql/

 

监控VM使用量:   jstat

 jstat -class pid         显示加载class的数量,及所占空间等信息

 jstat -compiler pid   显示VM实时编译的数量等信息

 jstat -gc pid              显示gc的信息,查看gc的次数及时间。最后五项分别是: young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。 

 jstat -gccapacity pid 显示VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。 

 jstat -gcnew pid               new对象的信息。

 jstat -gcnewcapacity pid new对象的信息及其占用量。  
 jstat -gcold pid                 old对象的信息。  
 jstat -gcoldcapacity pid   old对象的信息及其占用量。  
 jstat -gcpermcapacity pid perm对象的信息及其占用量。  
 jstat -gcutil pid                   统计gc信息统计。  
 jstat -printcompilation pid  当前VM执行的信息。 除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。  

 

 

 see:

[Java性能剖析]Sun JDK基本性能剖析工具介绍

[Java性能剖析]Sun JDK可视化性能剖析工具介绍

JDK自带VM分析工具jps,jstat,jmap,jconsole

jmap命令(Java Memory Map)

java内存溢出分析工具:jmap使用实战

性能测试 -- jmap 输出内存中对象 的工具使用 --监控java内存溢出

J2SE6中使用jhat来分析内存堆

JConsole手册

使用JMAP dump及分析dump文件

 

 

 

JMX命令行工具:   jmxterm(一个基于jconsole的jmx client命令行工具,不需要事先开启JMX服务端口)

1) 运行: java -jar jmxterm-xxx.jar

2) $>jvms  列出当前java进程

3) $>open PID  连接上要查看的java进程

4) $>domains 显示当前可查看的bean域

5) $>beans 上一步所列出的domain(如:$>beans java.lang )  显示该域下可查看的bean

6) $>bean 上一步所列出的bean(如:$>bean java.lang:type=Memory)选定该bean

7) $>info  显示上一步所选定的bean下可查看的属性

8) $>get 上一步所列出的属性名(如:$>get ObjectPendingFinalizationCount) 显示该属性值

过程中显示的信息如下:

c:\>java -jar jmxterm-1.0.jar
Welcome to JMX terminal. Type "help" for available commands.
$>jvms
9184     ( ) - jmxterm-1.0.jar
8760     ( ) - jdiary.jar
4200     ( ) -
$>open 8760
#Connection to 8760 is opened
$>domains
#following domains are available
JMImplementation
com.sun.management
java.lang
java.util.logging
$>beans java.lang
#domain = JMImplementation:
JMImplementation:type=MBeanServerDelegate
#domain = com.sun.management:
com.sun.management:type=HotSpotDiagnostic
#domain = java.lang:
java.lang:name=Code Cache,type=MemoryPool
java.lang:name=CodeCacheManager,type=MemoryManager
java.lang:name=PS Eden Space,type=MemoryPool
java.lang:name=PS MarkSweep,type=GarbageCollector
java.lang:name=PS Old Gen,type=MemoryPool
java.lang:name=PS Perm Gen,type=MemoryPool
java.lang:name=PS Scavenge,type=GarbageCollector
java.lang:name=PS Survivor Space,type=MemoryPool
java.lang:type=ClassLoading
java.lang:type=Compilation
java.lang:type=Memory
java.lang:type=OperatingSystem
java.lang:type=Runtime
java.lang:type=Threading
#domain = java.util.logging:
java.util.logging:type=Logging
$>bean java.lang:type=Memory
#bean is set to java.lang:type=Memory
$>info
#mbean = java.lang:type=Memory
#class name = sun.management.MemoryImpl
# attributes
  %0   - HeapMemoryUsage (javax.management.openmbean.CompositeData, r)
  %1   - NonHeapMemoryUsage (javax.management.openmbean.CompositeData, r)
  %2   - ObjectPendingFinalizationCount (int, r)
  %3   - Verbose (boolean, rw)
# operations
  %0   - void gc()
# notifications
  %0   - javax.management.Notification(java.management.memory.threshold.exceeded
,java.management.memory.collection.threshold.exceeded)
$>get ObjectPendingFinalizationCount
#mbean = java.lang:type=Memory:
ObjectPendingFinalizationCount = 0;
$>

 

其他命令可通过help进行查询,对于每个命令也可以通过 -h 查看其参数用法。

 

 

 

  • 大小: 167.2 KB
分享到:
评论

相关推荐

    java虚拟机常用命令

    在Java虚拟机运行过程中,我们可能需要使用各种命令工具来监控和诊断可能出现的问题。以下是一些常用的JVM命令工具及其知识点。 1. jps命令 jps(JVM Process Status Tool)命令用于列出正在运行的Java虚拟机进程...

    jvm常用命令工具

    ### jvm常用命令工具 #### 一、概述 在程序运行过程中,经常会出现各种各样的问题,例如性能瓶颈、内存泄漏、死锁等。为了快速定位并解决问题,我们需要收集多种类型的运行时信息,包括但不限于系统日志、堆转储...

    关于java的常用dos命令

    以下是从“关于Java的常用DOS命令”这一主题中提炼出的关键知识点,这些知识点涵盖了文件操作、环境变量查看、Java编译运行以及与Tomcat服务器相关的配置等核心内容。 ### DOS命令在Java开发中的应用 #### 文件...

    java中常用命令的详解以及包与目录详解

    在Java编程中,`javac`和`java`是两个非常重要的命令行工具,它们分别用于编译和执行Java程序。本文将详细介绍这两个命令的使用方法,以及在处理带有包的Java程序时如何操作。 `javac`是Java语言的编译器,负责将源...

    分享28个java常用的工具类源码打包下载

    本资源分享了28个Java常用的工具类源码,涵盖了多种实用功能,包括添加水印、文件上传、生成略缩图、文件操作、MD5加密、时间日期处理、字符串操作以及过滤器和数据导出到Excel。 1. **添加水印**:在图像处理中,...

    java开发中常用的linux命令汇总

    以下是一些Java开发中常用的Linux命令,它们对于优化开发流程至关重要。 1. **ls**:列出目录内容。`ls -l` 可以查看详细信息,包括文件权限、所有者、大小和修改时间。 2. **cd**:切换目录。用于在文件系统中...

    java常用的工具类实现

    以下是一些Java中常用工具类的详细介绍: 1. **String**: `java.lang.String` 类是最基础的字符串处理工具类,提供了大量的静态方法,如 `concat()`、`substring()`、`indexOf()`、`replace()` 等,用于字符串的...

    wsdl2java命令使用

    **WSDL2Java命令使用详解** 在Web服务开发中,WSDL(Web Service Description Language)是一种XML格式,用于定义服务接口、操作、消息结构等。它使得服务提供者和服务消费者可以进行互操作。Apache Axis是Java平台...

    Linux常用命令汇总

    Linux常用命令汇总中,首先涉及到的是检查Java开发工具包(JDK)是否已安装以及版本信息。使用命令`java –version`和`javac –version`可以实现该功能。`java –version`用于查看Java运行环境的版本,而`javac –...

    邮件发送 poi 二维码 条形码等java常用的工具类

    该工具为个人整理修改的常用工具类,maven结构,Java语言编写详细依赖间pom文件,如有冲突自行修改, 包括条形码操作工具、二维码操作、图片验证码工具、动态密码工具、雪花算法id工具、签名工具、poi导出、json转换...

    linux常用命令工具安装包

    总结来说,这个"linux常用命令工具安装包"提供了在Linux系统中进行文件传输、网络管理以及压缩文件处理的关键工具。rzsz用于文件传输,net-tools涵盖了多种网络管理命令,unzip用于解压.zip文件,而zlib及其开发包则...

    Java常用工具类大全.7z

    提供了很丰富的java工具类,包括字符串、数字、日期、文件、图像、编码解码、校验工具、文档操作等。 主要分为以下几种: - 1.通用操作类,例如String、数字、日期、各种校验等 - 2.文档操作,excel、pdf等 - 3.加密...

    Java性能调优命令

    以下是一些常用的Java性能调优命令及其用法和相关知识点。 1. jps命令用于列出所有的JVM实例。通过该命令,开发者可以快速查看本机上所有Java应用程序的进程ID。例如,使用`jps`可以列出本机所有的JVM实例。 2. ...

    JAVA 常用工具;诶之

    在Java开发过程中,有一些常用工具是不可或缺的,这些工具包括但不限于JDK(Java Development Kit)、Tomcat(一个流行的Java应用服务器)等。本篇将详细讲解如何配置这些工具。 首先,JDK是Java编程的基础,包含了...

    java项目打包工具

    以下是一些常用的Java项目打包工具及其功能详解: 1. **Maven**: Maven是一个基于项目对象模型(Project Object Model,POM)的概念,用于管理和构建Java项目。它通过一个XML格式的POM文件来管理项目的构建、报告...

    java工程常用代码工具类

    在这个"java工程常用代码工具类"中,我们可以找到几个关键功能的实现,包括Jedis、FTP上传、JSON格式化、RESTful风格接口以及HTTP工具。下面将分别详细介绍这些知识点。 1. **Jedis**: Jedis是Java语言编写的...

    java反编译工具 jad

    jad 是应用最广泛的java 反编译工具;其本身是命令行工具;其他很多用具是在jad内核的基础上加了一个图形界面;比如我上传的资源、Cavaj Java Decompiler  以下假设jad.exe在c:\java目录下  一、基本用法  ...

    多种java常用API

    `java常用API_试学.wmv`可能是一个视频教程,它应该会更直观地展示如何使用这些API,并提供实践案例来帮助学习者加深理解。而`简介.txt`可能包含了课程的概述或者进一步的学习指南。通过深入学习和实践,开发者可以...

    java类反编译工具系统维护常用工具(使用 )

    常用的 Java 反编译工具有 JAD, CFR, FernFlower, Procyon 等。 二、JAD JAD 是一款功能强大的 Java 反编译器,其反编译结果的质量相对较高,接近原始源代码。使用 JAD,你可以通过命令行或者集成开发环境(IDE)...

    jdk常用命令

    12. **jcmd**:Java命令工具,用于在JDK 1.7及更高版本中执行诊断操作。 13. **jrunscript**:运行JavaScript或其他支持的脚本语言,利用Java平台的功能。 14. **keytool**:管理密钥和证书,用于创建和管理...

Global site tag (gtag.js) - Google Analytics