JVM从入门到精通-JVM工具命令行篇

第一章JVM概述

1.为什么调优JVM

2.调优概述

3.性能优化步骤

1.性能监控

2.性能分析

3.性能调优

减少Full GC的频率,以较小的内存改善应用程序的响应性、吞吐量和延迟性;

4.性能指标

并发数:

三者关系

并发数影响吞吐量和响应时间;

当适合时,吞吐量最大,响应时间较快;

当并发数达到极限时,堵车,响应时间和吞吐量都会减少;

第二章:JVM诊断工具-命令行

 

1.JPS查看正在运行的Java进程

2.JPS [options] [hostid] 

jps -m > a.txt

-m是外部传递给主方法main的参数

jps -v 传递给虚拟机的参数

关闭UsePerfData参数就无法查看到进行信息

hostid参数

2.jstat查看JVM的统计信息

基本语法

interval:时间间隔;

count:查询次数;

-t:程序运行时间;

-h:查询标题信息;

应用1:使用-t参数,监测GC时间,得出GC与程序运行时间

计算垃圾回收的时间与程序运行的时间进行分析

应用2:判断OOM异常

从老年代中抽样出一组数据中最小的占用比例;若一直上升则有肯能OOM;

3.jinfo实时查看和修改JVM配置参数

扩展:查看JVM修改和默认参数

4.jmap导出内存映像文件&内存使用情况

 

4.1 导出dump文件

例子:手动导出dump文件

jmap -dump:format=b,file=d:\1.hprof  进程ID

格式为b,是把dump文件和hprof文件映射起来;

jmap -dump:live,format=b,file=d:\1.hprof  进程ID

live只打印存活的对象;

手动导出和自动导出

自动导出可以在OOM时导出Dump文件;

 

自动导出:

4.2 显示堆内存相关信息

jmsp -heap  pid

jmap在此时这个时间点上的堆使用情况;

GUI Visual > jstat > jmap

jmap -histo pid

小结

注意:

若设置live选项在两个安全点之间,那么无法探知这些对象

若长时间无法跑到安全点,则jmap将一直等下去;与jstat则不同

5.jhat堆分析工具

注意:一般不会在生产环境的服务器上使用jhat

 

5.1基本语法

6.jstack打印JVM线程快照

6.1 基本情况

6.2 具体语法

例子1:两个线程死锁问题

线程1,先申请s1,再申请s2;

线程2,先申请s2,再申请s1;

同时在每个线程申请资源期间sleep等待一段时间;

使用jstack查看进程:

发现两个线程的状态为BLOCKED

分析后的原因,及相关代码块;

例子2:同步问题

同步代码块

线程1:BLOCKED

线程2:TIMED_WAITING

6.3基本参数

加上-l显示除堆栈外,锁的附加信息

代码中打印线程信息

7.jcmd多功能的命令行

7.1 基本使用

jcmd可以替换jmap

7.2 基本语法

7.3 jcmd pid 具体命令

8.jstatd远程主机信息收集

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值