[JAVA]性能问题常用linux命令和java命令总结
linux命令
top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。
每一个字段的具体含义可以参见每天一个linux命令(44):top命令
,这篇文章写的很全面。
另外对于Load Average的解释可参考一幅图秒懂LoadAverage(负载)上对于Load的解释:
Load < 0.7时:系统很闲,马路上没什么车,要考虑多部署一些服务
0.7 < Load < 1时:系统状态不错,马路可以轻松应对
Load == 1时:系统马上要处理不多来了,赶紧找一下原因
Load > 5时:马路已经非常繁忙了,进入马路的每辆汽车都要无法很快的运行.
free
free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区
主要记住有如下几个选项就好了。
-b:以Byte为单位显示内存使用情况;
-k:以KB为单位显示内存使用情况;
-m:以MB为单位显示内存使用情况;
-g:以GB为单位显示内存使用情况。
java命令
jps
全称:JVM Process Status Tool
-l: 输出应用程序主类完整package名称或jar完整名称。
-v: 列出jvm参数, 这个比较有用,利于分析。
-m:输出主函数传入的参数。
jstat
全称:JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据。
用的比较多的是-gcutil选项。
例子:
jstat -gcutil 21891 250 7
S0 S1 EOP YGC YGCT FGC FGCT GCT
12.44 0.00 27.20 9.49 96.70 78 0.176 5 0.495 0.672
12.44 0.00 62.16 9.49 96.70 78 0.176 5 0.495 0.672
12.44 0.00 83.97 9.49 96.70 78 0.176 5 0.495 0.672
0.00 7.74 0.00 9.51 96.70 79 0.177 5 0.495 0.673
0.00 7.74 23.37 9.51 96.70 79 0.177 5 0.495 0.673
0.00 7.74 43.82 9.51 96.70 79 0.177 5 0.495 0.673
0.00 7.74 58.11 9.51 96.71 79 0.177 5 0.495 0.673
这个例子的输出显示,年轻一代收集发生在第三和第四样本之间。收集耗时0.001秒,将物体从Eden空间(E)推广到旧空间(O),导致旧空间利用率从9.49%增加到9.51%。在收集之前,幸存者空间利用率为12.44%,但收集后只有7.74%被利用。
jmap
我用的比较多的是jmap -heap 19798,可以看到GC用的是什么算法,以及目前堆栈使用情况。
笔者还处于性能问题的初学阶段,此文仅供参考。待后续实战经验丰富,会继续完善本文。
推荐阅读
-
java程序员必须要学会的linux命令总结(推荐)
-
java BigInteger大整数类 和 BigDecimal大浮点数类 解决大数问题 常用方法简单学习总结
-
[JAVA]性能问题常用linux命令和java命令总结
-
Java常用命令及性能调优工具
-
Java运行Linux命令和Windows命令工具类
-
解决IDEA和CMD中java命令提示错误: 找不到或无法加载主类的问题
-
荐 Java-day01【发展史、跨平台原理、JRE和JDK、常用DOS命令、关键字、常量、数据类型、变量使用的注意事项、标识符、类型转换】
-
Maven下载安装, 核心功能, 仓库, 工程结构, 常用命令和插件, 生命周期, idea创建java,web工程, tomcat发布web工程的方式
-
Linux下用命令行编译运行Java总结
-
Java运行Linux命令和Windows命令工具类