java 性能分析 linux 命令_性能测试分析-JVM常用命令(一)

jps 虚拟机状态工具

​主要功能:可以列出正在运行的虚拟机(java)进程情况及其id(和linux中ps类似),显示虚拟机执行主类main函数所在的类,这些进程的本地虚拟机唯一ID

部分选项:

-q:只输出LVMID 省略主类的名称

-m:输出虚拟机进程启动时传给主类main()函数的参数

-l:输出主类的全类名如果进程执行的是Jar包输出Jar路径

-v:输出虚拟机进程启动时JVM参数

命令格式:jps [option] [hostid]

执行样式一:-l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名

ba7821f52430c5d929e2b1826db7e41c.jpg

执行样式二:-v 输出传递给JVM的参数 在这里,在启动main方法的时候,我给jvm传递一个参数:-Dfile.encoding=UTF-8,执行jps -v:

9f30a484f3f57508d8fb2d6ddcbf9c26.jpg

jps 命令有个地方很不好,似乎只能显示当前用户的java进程,要显示其他用户的还是只能用unix/linux的ps命令。

jps是我最常用的java命令。使用jps可以查看当前有哪些Java进程处于运行状态。如果我运行了一个web应用(使用tomcat、jboss、jetty等启动)的时候,我就可以使用jps查看启动情况。有的时候我想知道这个应用的日志会输出到哪里,或者启动的时候使用了哪些javaagent,那么我可以使用**jps -v** 查看进程的jvm参数情况。

jmap 内存映像工具

分析内存泄漏最常用命令之一。

主要功能:打印指定java进程(或核心文件、远程调试服务)的共享对象内存映射或堆内存细节。获取堆转储快照 ,生成Heap Dump。

查询finalize执行队列

查询java堆和永久代的详细信息(如空间使用率、当前使用的收集器)

常见的内存错误:

* outOfMemoryError 年老代内存不足。

* outOfMemoryError:PermGen Space 永久代内存不足。

* outOfMemoryError:GC overhead limit exceed 垃圾回收时间占用系统运行时间的98%或以上。

**Jmap****最常用的分析命令:**

一、[root@ ~]# **jmap -heap 31846 *该命令用来*查看java 堆(heap)使用情况。**

6e451e05033d89b96c82e75ea696f2b0.jpg

e5c217880b46e6806197c59e3a56c1ce.jpg

二、[root@ ~]# **jmap -histo 3331 **查看堆内存(histogram)中的对象数量及大小。

jmap -histo:live 这个命令执行,JVM会先触发gc,然后再统计信息。

02e29568121d7121924472632e19748a.jpg

三、[root@ ~]# jmap -dump:format=b,file=heapDump 6900 **将内存使用的详细情况输出到文件。

然后用**jhat****命令可以参看 ****jhat -port 5000 heapDump** 最后在浏览器中就可以访问:**http://localhost:5000/** 查看详细信息。

总结:

1.如果程序内存不足或者频繁GC,很有可能存在内存泄露情况,这时候就要借助Java堆Dump查看对象的情况。

2.要制作堆Dump可以直接使用jvm自带的jmap命令。

3.可以先使用jmap -heap命令查看堆的使用情况,看一下各个堆空间的占用情况。

4.使用jmap -histo:[live]查看堆内存中的对象的情况。如果有大量对象在持续被引用,并没有被释放掉,那就产生了内存泄露,就要结合代码,把不用的对象释放掉。

5.也可以使用 jmap -dump:format=b,file=命令将堆信息保存到一个文件中,再借助jhat命令查看详细内容

6.在内存出现泄露、溢出或者其它前提条件下,建议多dump几次内存,把内存文件进行编号归档,便于后续内存整理分析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值