文章目录
1 性能优化的步骤
2 性能评价指标
-
吞吐量
-
对单位时间内完成的工作(请求)量
-
并发数
同一时刻,对服务器有实际交互的请求数 -
内存占用
java 堆区所占的内存大小
3 性能监控
3.1 查看当前运行的java进程
jps
-m 输出给虚拟机进程启动时传递给主类的参数
-v 列出虚拟机进程启动时的jvm参数
注意:进程的本地虚拟机id与操作系统的进程id是一致的
3.2 查看jvm统计信息
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
3.3 怎样判断是否出现oom
-
我们可以比较java进程启动时间以及总gc时间(gct)比例,得出gc时间占运行时间的比例
-
比例超过20%,说明目前堆的压力较大,超过90%说明随时都可能抛出oom异常
命令为
jstat - gc -t pid 1000 10 表示的是每隔1000毫秒,进行显示进程号为pid的gc信息,共显示十次
3.4 jstat 判断内存溢出
3.5 实时查看并修改jvm参数配置
3.5.1 查看曾经赋过值的一些参数
jinfo -flags PID
3.5.2 查看某个java进程的具体参数的值
jinfo -flag 具体参数 PID
3.5.3 修改boolean类型的值
jinfo -flag [+][-] 具体参数 PID
3.5.4 针对非boolean类型的值
jinfo -flag 具体参数=值 PID
3.6 扩展
3.6.1 查看jvm参数启动的初始值
java -XX:+PrintFlagsInitial
3.6.2 查看所有jvm参数的最终值
java -XX:+PrintFlagsFinal
3.6.3 查看被用户设置过的详细信息
java -XX:+PrintCommandLineFlags
3.7 jmap 的使用
3.7.1 生成dump文件
jmap -dump
3.7.2 输出堆空间的信息
jmap -heap
3.7.3 输出堆中对象的统计信息
jmap -histo
3.7.4 怎样导出dump文件
- 主动使用
jmap -dump:format=b,file=<file文件> PID
抓取存活(常用)
jmap -dump:live,format=b,file=<file文件> PID
- 自动方式
常用在报oom时使用,导出应用程序的当前堆快照
-XX:+HeapDumpOnOutOfMemoryError
指定对快照的保存位置
-XX:HeapDumpPath=<filename.hprof>
3.8 jvm线程快照
jstack PID
主要有以下状态
-
死锁(Deadlock)
-
等待资源(waiting on condition)
-
等待获取监视器 (waiting on monitor entry)
-
阻塞 (blocked)
-
执行中 (runnable)
-
暂停 (suspended)
3.9 jcmd
jcmd 可以替换jmap
查看支持的操作
jcmd PID help
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。