服务器问题查询
查询java进程id:
ps -ef|grep java
查询某一进程中线程的情况:
top -Hp 29945
线程转换16进制
printf “%x\n” 16482
查看该进程下该线程的具体线程
jstack 16473|grep 4062
jstack是java虚拟机自带的一种堆栈跟踪工具,查询某一进程的具体情况
jstack 16473
展示如下:
Jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java JVM进程的一些简单情况
jps:列出pid和java主类名
jps -p :仅仅显示VM 标示,不显示jar,class, main参数等信息.
jps -m:输出主函数传入的参数
jps -l: 输出应用程序主类完整package名称或jar完整名称.
jps -v: 列出jvm参数, -Xms20m -Xmx50m是启动程序指定的jvm参数
展示如下:
jmap (linux下特有,也是很常用的一个命令)
观察运行中的jvm物理内存的占用情况。
参数如下:
-heap :打印jvm heap的情况
-histo: 打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
-histo:live : 同上,但是只答应存活对象的情况
-permstat: 打印permanent generation heap情况
展示如下:
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:
-class:统计class loader行为信息
-compile:统计编译行为信息
-gc:统计jdk gc时heap信息
-gccapacity:统计不同的generations(不知道怎么翻译好,包括新生区,老年区,permanent区)相应的heap容量情况
-gccause:统计gc的情况,(同-gcutil)和引起gc的事件
-gcnew:统计gc时,新生代的情况
-gcnewcapacity:统计gc时,新生代heap容量
-gcold:统计gc时,老年区的情况
-gcoldcapacity:统计gc时,老年区heap容量
-gcpermcapacity:统计gc时,permanent区heap容量
-gcutil:统计gc时,heap情况
-printcompilation:不知道干什么的,一直没用过。
一般比较常用的几个参数是:
jstat -class 2083 1000 10 (每隔1秒监控一次,一共做10次)
参数解释:
Options — 选项,我们一般使用 -gcutil 查看gc 情况
vmid — VM 的进程号,即当前运行的java 进程号
interval– 间隔时间,单位为秒或者毫秒
count — 打印次数,如果缺省则打印无数次
S0 — Heap 上的 Survivor space 0 区已使用空间的百分比
S1 — Heap 上的 Survivor space 1 区已使用空间的百分比
E — Heap 上的 Eden space 区已使用空间的百分比
O — Heap 上的 Old space 区已使用空间的百分比
P — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间( 单位秒 )
FGC — 从应用程序启动到采样时发生 Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间( 单位秒 )
GCT — 从应用程序启动到采样时用于垃圾回收的总时间( 单位秒)
展示如下: