zoukankan      html  css  js  c++  java
  • jvm排查工具

    jps

    jps -mvl --查看java的ps进程。

    jstack

    打印一个线程堆栈信息

    top -H -p pid1 -> 得到占用资源大的pid2

    jstack pid1 | grep "nid=0x printf "%x " pid2" -A 100打印后面100行(-C 打印前后100行 -B 打印前一百行)

    jmap

    jmap -dump:format=b,file=test.bin 4939 --tomcat pid

    1.top看java进程的cpu和mem是否高。记录下java pid号

    2.jstack -l 9547 > 9547.stack --将1得到java pid号堆栈dump下来。

    3.top -H -p 9547 -- java pid 得到该进程下cpu高的pid号

    4.printf 0x%x 9054 --将3得到的pid进行16进制。可以在2中dump下来的文件中找到相应的线程。

    jmap -heap pid --查看内存 

    1.jmap -heap ${pid} (内存概述)

    可查看当前内存配置

    2.jmap -histo ${pid} (内存比对)

    -histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量. 

    可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用方法 jmap -histo pid。如果连用SHELL jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。

    3.jmap -dump (内存分析)

    jmap -dump:format=b,file=outfile 3024可以将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具(Memory Analysis Tool),使用参见:http://blog.csdn.net/fenglibing/archive/2011/04/02/6298326.aspx)或与jhat (Java Heap Analysis Tool)一起使用,能够以图像的形式直观的展示当前内存是否有问题。

    4.core dump开关

    dump文件可以在程序crash的时候方便查看crash的上下文信息。

    查看是否已打开

    ulimit -c unlimited就可以了。只对当前对话有效

    想长期有效:/etc/profile文件中找到 ulimit -S -c 0 > /dev/null 2>&1.ok 找到0改为unlimited,source /etc/profile使其生效。

    core文件位置:默认与可执行程序同一目录下。文件名为core.<pid>

    文件名模式保存在/proc/sys/kernel/core_pattern缺省是core

    可通过以下命令修改core dump

    echo PATH > /proc/sys/kernel/core_pattern

  • 相关阅读:
    idea 快捷键
    python 之网页解析器
    python 之正则表达式
    Python Requests快速入门
    Html style="visibility:hidden"与style="display:none"的区别
    html 之table标签结构学习
    python 之format字符串格式化
    Python 时间戳和日期相互转换
    SQL 字符串函数
    xampp默认配置拿shell
  • 原文地址:https://www.cnblogs.com/guochunyi/p/5405079.html
Copyright © 2011-2022 走看看