美文网首页
JVM问题排查

JVM问题排查

作者: 会飞的水珠 | 来源:发表于2019-06-01 09:58 被阅读0次

一、JVM的参数类型

1.Boolean类型

格式:-XX:[+-]<name>表示启用或者禁用name属性。

比如:-XX:+UseConcMarkSweepGC

           -XX:+UseG1GC

2.非Boolean类型

格式:-XX:<name>=<value>表示name属性的值是value。

比如:-XX:MaxGCPauseMillis=500

           XX:GCTimeRatio=19

3.-Xmx -Xms(虚拟机所在的最大、最小内存)

不是X参数,而是XX参数

-Xms等价于-XX:InitialHeapSize

-Xmx等价于-XX:MaxHeapSize

jinfo -flag MaxHeapSize <PID>

线程大小(单位:kb):jinfo -flag ThreadStackSize <PID>

4.查看初始值:-XX:+PrintFlagsInitial

5.查看修改值:-XX:+PrintFlagsFinal

        1.终端输入:java -XX:+PrintFlagsFinal -version > flags.txt

6.查看tomcat的最大内存是设置了多少:

jinfo -flag MaxHeapSize <Pid>

7.查看tomcat已经被我们手动赋过的值:

jinfo -flag <Pid>

8.查看垃圾回收器:

二、jstat查看JVM统计信息

可以查看类装载、垃圾收集、JIT编译

1.查看类加载的情况:

jstat -class <PID>

2.查看垃圾回收的情况:

每隔1秒钟输出10次

jstat -gc <PID> 1000 10

非堆区是操作系统的本地内存

三、jmap+MAT内存溢出

1.保存为java镜像文件:

jmap -dump:format=b,file=heap.hprof <Pid>

四、jstack与线程状态

1.查看进程的资源占用率

top -p <pid> -H

2.用jstack查看线程情况

jstack <pid> > test.txt

3.Linux下把十进制转16进制,在test.txt中要使用

printf "%x" <pid>

用十六进制数在导出的txt中搜索,这样就能找到对应的类。

参考文档

第一章

第二章

jdk8工具集

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html

Troubleshooting

https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/

jps

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jps.html

jinfo

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jinfo.html

jstat

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html

jmap:

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jmap.html

mat:

http://www.eclipse.org/mat/downloads.php

jstack:

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstack.html

java线程的状态

https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr034.html

java线程状态转化:

https://mp.weixin.qq.com/s/GsxeFM7QWuR--Kbpb7At2w

死循环导致CPU负载高

https://blog.csdn.net/goldenfish1919/article/details/8755378

正则表达式导致死循环:

https://blog.csdn.net/goldenfish1919/article/details/49123787

第三章

jvisualVM:

https://docs.oracle.com/javase/8/docs/technotes/guides/visualvm/index.html

https://visualvm.github.io/documentation.html

jvisulaVM如何添加插件

https://visualvm.github.io/index.html

第四章

btrace下载

https://github.com/btraceio/btrace

https://github.com/btraceio/btrace/releases/tag/v1.3.11

第五章

jdwp协议:

https://www.ibm.com/developerworks/cn/java/j-lo-jpda3/

tomcat-manager:

{tomcat}/webapps/docs/manager-howto.html

psi-probe:

https://github.com/psi-probe/psi-probe

tomcat优化相关参数:

${tomcat}/webapps/docs/config/http.html

${tomcat}/webapps/docs/config/host.html

${tomcat}/webapps/docs/config/context.html

${tomcat}/webapps/docs/connectors.html

apr连接器:

http://apr.apache.org/

第六章

nginx官网文档

http://nginx.org/en/docs/

nginx安装:

http://nginx.org/en/linux_packages.html

ngx_http_stub_status:

http://nginx.org/en/docs/http/ngx_http_stub_status_module.html

ngxtop:

https://github.com/lebinh/ngxtop

nginx-rdd

http://www.linuxde.net/2012/04/9537.html

第七章

jvm的运行时数据区

https://docs.oracle.com/javase/specs/jvms/se8/html/index.html

Metaspace

http://ifeve.com/jvm-troubleshooting-guide-4/

压缩类空间

https://blog.csdn.net/jijijijwwi111/article/details/51564271

CodeCache

https://blog.csdn.net/yandaonan/article/details/50844806

http://engineering.indeedblog.com/blog/2016/09/job-search-web-app-java-8-migration/

GC调优指南:

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/toc.html

如何选择垃圾收集器

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/collectors.html

G1最佳实践

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc_tuning.html#recommendations

G1 GC的一些关键技术

https://zhuanlan.zhihu.com/p/22591838

CMS日志格式

https://blogs.oracle.com/poonam/understanding-cms-gc-logs

G1日志格式

https://blogs.oracle.com/poonam/understanding-g1-gc-logs

GC日志分析工具

http://gceasy.io/ 

GCViewer

https://github.com/chewiebug/GCViewer

ZGC:

http://openjdk.java.net/jeps/333

第八章

java虚拟机规范

https://docs.oracle.com/javase/specs/jvms/se8/html/index.html

java语言规范

https://docs.oracle.com/javase/specs/jls/se8/html/index.html

javap:

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/javap.html

字段描述符

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.2

方法描述符

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.3

字节码指令:

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html

常量池:

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4

本地变量表:

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.6.1

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.13

操作数栈:

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.6.2

Code属性:

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3

LineNumberTable:

https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.12

constant variable:

https://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.12.4

常量表达式

https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.28

String.intern

https://blog.csdn.net/goldenfish1919/article/details/80410349

String去重

https://blog.csdn.net/goldenfish1919/article/details/20233263

相关文章

  • 一次完整的JVM堆外内存泄漏故障排查记录

    前言 记录一次线上JVM堆外内存泄漏问题的排查过程与思路,其中夹带一些JVM内存分配机制以及常用的JVM问题排查指...

  • JVM 问题排查

    CPU使用率高 找出使用率高的进程的pid 找出使用率高的线程tpid 查看使用率高的线程当前在干什么 GC问题 ...

  • JVM问题排查

    一、线上CPU飚高、死锁等排查基本步骤: 1、top 记录CPU使用率最高的JAVA进程PID 2、top -H...

  • JVM问题排查

    一、JVM的参数类型 1.Boolean类型 格式:-XX:[+-]表示启用或者禁用name属性。比如...

  • jvm问题排查

    写在前面 线上系统中:如果突然运行缓慢,CPU 100%,以及Full GC次数过多的问题,最终导致的直观现象就是...

  • JVM问题排查实战系列

    JVM问题排查实战 记一次频繁FGC的简单排查 一次JVM GC长暂停的排查过程 如何使用MAT进行内存泄露分析

  • JVM问题常用排查命令

    JVM问题常用排查命令 @Date 2017.05.23 JVM调优问题 CPU使用率与Load值偏大 : Thr...

  • 记一次OOM查询处理过程

    问题的爆出及分析排查现场 排查后的解决方案 项目的jvm参数 总结 一、问题的爆出及分析排查现场 服务偶尔会出现不...

  • JVM GC问题排查

    线上发生MQ消费延时报警,看业务log发现有几秒钟一行日志都没有,,参考历史情况这种情况不可能出现(发生报警是在业...

  • 8、线上问题排查

    文章主要列出了常见的排查工具,也有部分线上问题案例; JVM 问题排查 JDK工具包 javap 反编译工具jav...

网友评论

      本文标题:JVM问题排查

      本文链接:https://www.haomeiwen.com/subject/vnpgtctx.html