记录JVM常用命令
1、打印jvm配置参数
java -XX:+ PrintCommandLineFlags
2、监控jvm垃圾回收(侧重于回收频率)
jstat -gc pid(进程号) time(间隔毫秒) count(打印次数)
jstat -gc pid(进程号)
例如:
jstat -gc 43877 250 5
jstat -gc 43877
3、监控jvm垃圾回收(侧重使用空间占比)
jstat -gcutil pid(进程号) time(间隔毫秒) count(打印次数)
jstat -gcutil pid(进程号)
例如:
jstat -gcutil 43877 250 5
jstat -gcutil 43877
查询结果表明:这台服务器的新生代Eden区(E,表示Eden)使用了86%的空间,2个Survivor区(S0、S1,表示Survivor0、Survivor1)分别是62.5%,和0.00%,元空间(M 即jdk1.8之前的P,之前叫永久代)使用了99.11%,老年代(O,表示Old)使用了40.62%的空间。程序运行以来共发生Minor GC(YGC,表示YoungGC)11902次,总耗时172.562秒;发生Full GC(FGC,表示Full GC)5次,总耗时(FGCT,表示Full GCTime)为2.281秒;所有GC总耗时(GCT,表示GC Time)为174.842秒
4、监控jvm垃圾回收(打印上次垃圾回收的原因)
jstat -gccause pid(进程号) time(间隔毫秒) count(打印次数)
例如:
jstat -gccause 43877 250 5
Allocation Failure:表明本次引起GC的原因是因为在年轻代中没有足够的空间能够存储新的数据了。
ParNew: 表明本次GC发生在年轻代并且使用的是ParNew垃圾收集器
5、监控jvm垃圾回收(监控老年代)
jstat -gcold pid(进程号) time(间隔毫秒) count(打印次数)
例如:
jstat -gcold 43877 250 5
jstat -gcold 43877
6、生成快照信息
方式一
jmap -dump:format=b,file=文件名 pid
例如:
jmap -dump:format=b,file=czTest.bin 43877
方式二
kill -3
例如:
tomcat会打印再这个目录(catalina.out)
BES还未知
7、获取所有线程堆栈信息小工具
获取堆栈信息:jstack 43877
jstack -l 43877
<%@ page import="java.util.Map"%>
<html>
<head>
<title>服务器线程信息</title>
</head>
<body>
<pre>
<%
for (Map.Entry<Thread, StackTraceElement[]> stackTrace : Thread.getAllStackTraces().entrySet()) {
Thread thread = (Thread) stackTrace.getKey();
StackTraceElement[] stack = (StackTraceElement[]) stackTrace.getValue();
if (thread.equals(Thread.currentThread())) {
continue;
}
out.print("\n线程:" + thread.getName() + "\n");
for (StackTraceElement element : stack) {
out.print("\t"+element+"\n");
}
}
%>
</pre>
</body>
</html>
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第10天,点击查看活动详情