1.
jmap
命令
jmap
命令可以获得运行中的
jvm
的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。
1.1.
jmap -dump:[live,]format=b,file=<filename>
pid
live
参数可选,指明是活着的对象
format
文件格式
file
指定堆文件名
1.2.
-finalizerinfo
打印等待回收对象的信息
1.3.
-heap
打印堆总结
1.4.
-histo[:live]
打印堆的对象统计,包括对象数、内存大小等等
#
instance
是对象的实例个数
#bytes
是总占用的字节数
class
name
对应的就是
Class
文件里的
class
的标识
B
代表
byte
C
代表
char
D
代表
double
F
代表
float
I
代表
int
J
代表
long
Z
代表
boolean
前边有“
[
”代表数组,“
[I
”
就相当于“
int[]
”
对象用“
[L+
”类名表示
1.5.
-permstat
打印
java
堆
perm
区的
classloader
统计
1.6.
-F
强制,在
jmap
-dump
或
jmap
-histo
中使用,如果
pid
没有相应的回复
1.7.
-J
提供
jvm
选项,如:
-J-Xms256m
2.
jhat
命令
查看
java
堆文件,先用
jmap
导出堆文件
3.
jstack
观察
jvm
中当前所有线程的运行情况和线程当前状态
查看
cpu
负载过高的方法:首先输入
top
命令,然后输入
shift+h
,观察占用
cpu
高的线程,记录下此
pid
,然后转换成
16
进制,用
jstack
pid
导出线程堆栈,然后查找
nid
和先前转换的
16
进制相同的线程。
4.
jconsole
配置参数
:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9004
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=192.168.1.36
5.
jinfo
观察运行中的
java
程序的运行环境参数:参数包括
Java System
属性和
JVM
命令行参数
6.
jps
列出所有的
jvm
实例
7.
jstatd
启动
jvm
监控服务。它是一个基于
rmi
的应用,向远程机器提供本机
jvm
应用程序的信息。默认端口
1099
。
实例:
jstatd
-J-Djava.security.policy=my.policy
my.policy
文件需要自己建立,内如如下
grant
codebase "file:$JAVA_HOME/lib/tools.jar" {
permission
java.security.AllPermission;
};
这是安全策略文件,因为
jdk
对
jvm
做了
jaas
的安全检测,所以我们必须设置一些策略,使得
jstatd
被允许作网络操作
8.
jstat
8.1.
-class
统计
class loader
行为信息
jstat
-class 23300 1000 10
(每隔
1
秒监控一次,一共做
10
次)
l
Loaded : Number of classes loaded.
l
Bytes : Number of Kbytes loaded.
l
Unloaded : Number of classes unloaded.
l
Bytes : Number of Kbytes unloaded.
l
Time : Time spent performing class load and unload operations.
8.2.
-compile
统计编译行为信息
8.3.
-gc
统计
jdk gc
时
heap
信息
jstat
-gc 23300 2000 20
(每隔
2
秒监控一次,共做
10
)
l
S0C
:
Current survivor
(存活的)
space 0 capacity (KB).
l
EC
:
Current eden space capacity (KB).
l
EU
:
Eden space utilization (KB).
l
OC
:
Current old space capacity (KB).
l
OU
:
Old space utilization (KB).
l
PC
:
Current permanent space capacity (KB).
l
PU
:
Permanent space utilization (KB).
l
YGC
:
Number of young generation GC Events.
l
YGCT
:
Young generation garbage collection time.
l
FGC
:
Number of full GC events.
l
FGCT
:
Full garbage collection time.
l
GCT
:
Total garbage collection time.
8.4.
-gccapacity
统计不同的
generations
(不知道怎么翻译好,包括新生区,老年区,
permanent
区)相应的
heap
容量情况
8.5.
-gccause
统计
gc
的情况,(同
-gcutil
)和引起
gc
的事件
jstat
-gccause 23300
l
S0
:
Survivor space 0 utilization as a percentage of the space's
current capacity.
l
S1
:
Survivor space 1 utilization as a percentage of the space's
current capacity.
l
E
:
Eden space utilization as a percentage of the space's current
capacity.
l
O
:
Old space utilization as a
percentage of the space's current capacity.
l
P
:
Permanent space utilization as a percentage of the space's current
capacity.
l
YGC
:
Number of young generation GC events.
l
YGCT
:
Young generation garbage
collection time.
l
FGC
:
Number of full GC events.
l
FGCT
:
Full garbage collection
time.
l
GCT
:
Total garbage collection time.
l
LGCC
:
Cause of last Garbage
Collection.
l
GCC
:
Cause of current Garbage Collection.
8.6.
-gcnew
统计
gc
时,新生代的情况
8.7.
-gcnewcapacity
统计
gc
时,新生代
heap
容量
8.8.
-gcold
统计
gc
时,老年区的情况
8.9.
-gcoldcapacity
统计
gc
时,老年区
heap
容量
8.10.
-gcpermcapacity
统计
gc
时,
permanent
区
heap
容量
8.11.
-gcutil
统计
gc
时,
heap
情况
8.12.
-printcompilation
不知道干什么的,一直没用过。
分享到:
相关推荐
**WSDL2Java命令使用详解** 在Web服务开发中,WSDL(Web Service Description Language)是一种XML格式,用于定义服务接口、操作、消息结构等。它使得服务提供者和服务消费者可以进行互操作。Apache Axis是Java平台...
本文将从给定文件的标题和部分内容中提取出与Java命令相关的知识点。 首先,Java的可执行文件通常位于Java开发工具包(JDK)的bin目录中。这个目录下包含了多个重要的命令行工具,其中一些我们可以在给定文件的部分...
### 二、执行Java命令引入外部JAR包的方法 #### 方法1:修改系统环境变量 最常见的方式是通过修改系统环境变量`CLASSPATH`来添加外部JAR包。`CLASSPATH`环境变量告诉JVM在哪里可以找到用户自定义的类和资源。例如...
Java命令大全涵盖了几个重要的工具,它们是Java开发者日常工作中不可或缺的部分。这些工具包括`java.exe`、`javac.exe`、`javaw.exe`、`javah`和`javap`,它们各自承担着不同的任务。 1. `java.exe`: 这是运行Java...
java命令大全.doc
Java命令参数大全是Java开发者日常工作中不可或缺的一部分,它包含了运行Java程序时所需要的各种选项和配置。这份PDF文档详细列举并解释了Java命令行接口(JVM)的各种参数,旨在帮助开发者更好地理解和使用Java...
Java命令是Java开发和运行过程中不可或缺的工具,它们提供了对JVM(Java虚拟机)的控制,以及对Java程序的编译、打包、文档生成、反编译等操作。以下是对Java常用命令的详细解释: 1. **javac.exe**:Java编译器,...
【JAVA命令大全——深入理解JDK bin目录下的关键命令】 在Java开发中,JDK的bin目录下包含了许多用于编译、运行、调试和分析Java程序的命令工具。以下是几个最重要的命令及其详细解释: 1. **java.exe**: 这是...
### Java零基础 - 使用java命令运行Java程序 #### 编写示例源码 为了能够更好地理解如何使用`java`命令来运行Java程序,我们首先需要编写一段Java源代码。这里我们将创建一个非常简单的程序——“Hello, World!”...
在Java中,命令模式的应用非常广泛,尤其在需要解耦调用者和接收者时。 命令模式的核心组成部分包括:**命令接口**、**具体命令类**、**接收者**和**调用者**。 1. **命令接口**:定义了一个接收者需执行的操作,...
这份“JAVA命令大全-JVM设置.rar”压缩包文件包含了关于Java命令行选项以及JVM配置的相关知识。 首先,`JAVA命令大全.doc`可能包含以下内容: 1. **Java启动命令**:`java`和`javac`是最基础的命令,分别用于执行...
Java命令主要包括编译、运行、调试、性能监控等多个方面,其中`javac`用于编译源代码,`java`用于执行已编译的字节码,而`jps`、`jstat`等工具则用于系统监控和故障排查。本文主要关注`java`命令的高级用法,特别是...
标题"wsdl2java命令使用所需bin"暗示了这是一个关于如何使用`wsdl2java`工具的教程,该工具通常用于从WSDL(Web服务描述语言)文件生成Java客户端和服务端代码。这个过程被称为WSDL到Java的绑定,是SOA(面向服务...
《在EditPlus中配置javac和java命令》 在IT行业中,编辑器是开发者的重要工具,而EditPlus作为一款功能强大的文本编辑器,因其简洁的界面、高效的代码编写功能以及丰富的自定义设置,深受广大程序员的喜爱。然而,...
Java命令是Java开发中最基础的执行工具,它用于启动Java应用程序。当尝试使用`java`命令运行一个`.class`文件时,可能会遇到各种异常。这些异常可能是由于多种原因引起的,包括但不限于以下几点: 1. **类路径问题*...
《让EditPlus支持javac,java命令》 对于初学者而言,使用编辑器直接运行Java程序无疑极大地简化了开发流程,免去了在命令行反复切换的繁琐步骤。EditPlus作为一款功能强大的文本编辑器,通过配置可以实现对Java编译...