#!/bin/sh DUMP_PIDS=`ps --no-heading -C java -f --width 1000 |awk '{print $2}'` if [ -z "$DUMP_PIDS" ]; then echo "The server $HOST_NAME is not started!" exit 1; fi DUMP_ROOT=~/dump if [ ! -d $DUMP_ROOT ]; then mkdir $DUMP_ROOT fi DUMP_DATE=`date +%Y%m%d%H%M%S` DUMP_DIR=$DUMP_ROOT/dump-$DUMP_DATE if [ ! -d $DUMP_DIR ]; then mkdir $DUMP_DIR fi for PID in $DUMP_PIDS ; do #Full thread dump 用来查线程占用,死锁等问题 $JAVA_HOME/bin/jstack $PID > $DUMP_DIR/jstack-$PID.dump 2>&1 echo -e ".\c" #打印出一个给定的Java进程、Java core文件或远程Debug服务器的Java配置信息,具体包括Java系统属性和JVM命令行参数。 $JAVA_HOME/bin/jinfo $PID > $DUMP_DIR/jinfo-$PID.dump 2>&1 echo -e ".\c" #jstat能够动态打印jvm(Java Virtual Machine Statistics Monitoring Tool)的相关统计信息。如young gc执行的次数、full gc执行的次数,各个内存分区的空间大小和可使用量等信息。 $JAVA_HOME/bin/jstat -gcutil $PID > $DUMP_DIR/jstat-gcutil-$PID.dump 2>&1 echo -e ".\c" $JAVA_HOME/bin/jstat -gccapacity $PID > $DUMP_DIR/jstat-gccapacity-$PID.dump 2>&1 echo -e ".\c" #未指定选项时,jmap打印共享对象的映射。对每个目标VM加载的共享对象,其起始地址、映射大小及共享对象文件的完整路径将被打印出来, $JAVA_HOME/bin/jmap $PID > $DUMP_DIR/jmap-$PID.dump 2>&1 echo -e ".\c" #-heap打印堆情况的概要信息,包括堆配置,各堆空间的容量、已使用和空闲情况 $JAVA_HOME/bin/jmap -heap $PID > $DUMP_DIR/jmap-heap-$PID.dump 2>&1 echo -e ".\c" #-dump将jvm的堆中内存信息输出到一个文件中,然后可以通过eclipse memory analyzer进行分析 #注意:这个jmap使用的时候jvm是处在假死状态的,只能在服务瘫痪的时候为了解决问题来使用,否则会造成服务中断。 $JAVA_HOME/bin/jmap -dump:format=b,file=$DUMP_DIR/jmap-dump-$PID.dump $PID 2>&1 echo -e ".\c" #显示被进程打开的文件信息 if [ -r /usr/sbin/lsof ]; then /usr/sbin/lsof -p $PID > $DUMP_DIR/lsof-$PID.dump echo -e ".\c" fi done #主要负责收集、汇报与存储系统运行信息的。 if [ -r /usr/bin/sar ]; then /usr/bin/sar > $DUMP_DIR/sar.dump echo -e ".\c" fi #主要负责收集、汇报与存储系统运行信息的。 if [ -r /usr/bin/uptime ]; then /usr/bin/uptime > $DUMP_DIR/uptime.dump echo -e ".\c" fi #内存查看 if [ -r /usr/bin/free ]; then /usr/bin/free -t > $DUMP_DIR/free.dump echo -e ".\c" fi #可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。 if [ -r /usr/bin/vmstat ]; then /usr/bin/vmstat > $DUMP_DIR/vmstat.dump echo -e ".\c" fi #报告与CPU相关的一些统计信息 if [ -r /usr/bin/mpstat ]; then /usr/bin/mpstat > $DUMP_DIR/mpstat.dump echo -e ".\c" fi #报告与IO相关的一些统计信息 if [ -r /usr/bin/iostat ]; then /usr/bin/iostat > $DUMP_DIR/iostat.dump echo -e ".\c" fi #报告与网络相关的一些统计信息 if [ -r /bin/netstat ]; then /bin/netstat > $DUMP_DIR/netstat.dump echo -e ".\c" fi echo "OK!"
github地址:https://github.com/zhwj184/shell-work
相关推荐
"Jvm堆栈dump文件分析"是指通过特定工具对这些dump文件进行解析,以便诊断和解决问题。 IBM提供了一款名为HeadAnalyzer的工具,版本4.1.4,专门用于分析Java堆栈信息,尤其适用于WebSphere应用服务器环境。...
性能测试,线程的 dump 看到线程的 死锁,等待 运行状态
它通过分析JVM的堆转储(Heap Dump)文件,能帮助开发者深入理解内存分配情况,找出潜在的问题。 MAT的主要功能包括: 1. **内存泄漏检测**:MAT提供了一种名为"Leak Suspects"的报告,能够快速识别可能导致内存...
介绍了heap dump和thread dump,以及详细介绍dump工具Memory Analyzer的使用,最后讲解了Java对象的内存布局。
MAT通过深入分析堆转储(heap dump)文件,提供了丰富的视图和功能,使内存管理变得更加直观和高效。 1. **内存泄漏检测**: 内存泄漏是导致Java应用性能下降和系统资源耗尽的主要原因之一。MAT通过分析堆转储文件...
### Java线上故障分析:线程dump与堆内存分析 #### 引言 在现代软件开发中,Java作为一门广泛使用的编程语言,在企业级应用、Web服务、大数据处理等多个领域发挥着重要作用。然而,随着系统复杂度的提升,线上环境...
"AIX dump分析工具"是专门用于解析和理解这些dump文件的工具,帮助管理员识别并解决Java应用服务器的问题。本文将详细介绍AIX dump分析工具的工作原理、用途以及如何使用它来分析ha398.jar、ga397.zip和jca37.zip等...
总的来说,heapdump分析是Java性能调优的重要手段,它可以帮助我们理解内存使用状况,找到性能瓶颈,进而优化代码和配置,提升系统的稳定性和效率。正确使用heapdump工具和相关的分析资源,是每个Java开发者必备的...
好用的线程dump分析工具
MAT JVM内存分析工具可以帮助开发者深入理解Java虚拟机(JVM)的内存管理机制,通过分析堆内存快照来识别内存消耗异常的情况。 首先,MAT提供了丰富的视图来帮助用户查看内存状态,例如“概述”视图可以快速了解堆...
这就是为什么需要工具如dumpAnalyzer来检查和分析内存快照(dump文件)的原因。 dumpAnalyzer主要功能包括: 1. **内存泄漏检测**:通过对内存快照的分析,dumpAnalyzer能够识别那些本应被垃圾收集器回收但仍然被...
ha456是一个IBM提供的轻量级heapdump分析工具,它可以帮助我们快速定位问题。 使用ha456.jar进行heapdump分析的步骤如下: 1. 将生成的heapdump.hprof文件与ha456.jar放在同一个目录下。 2. 运行heapdump.bat脚本...
通过分析heap dump文件,HeapAnalyzer可以展示对象的分布情况,识别长期存活的对象,从而帮助我们定位问题。 二、使用步骤 1. **生成Heap Dump** 在Java应用运行时,如果遇到内存问题,首先需要获取堆内存快照,这...
理解并熟练运用heap dump分析工具是Java开发者必备的技能之一,这有助于提高应用程序的性能和稳定性。通过IBM的工具,我们可以深入理解JVM内存的工作原理,及时发现并修复内存问题,从而优化应用程序的运行效率。
Java Thread Dump 分析 Java Thread Dump 分析是 Java 应用程序性能优化的重要工具之一。Thread Dump 是 JVM 的一个快照,记录了当前所有线程的状态,包括线程的 ID、名称、状态、锁信息等。通过分析 Thread Dump,...
此外,`javacore`和`heapdump`工具也是常用的WebSphere dump分析助手,它们提供了关于JVM内存和线程状态的详细信息。 对于z/OS这样的大型主机操作系统,IBM提供了Tivoli OMEGAMON工具集,其中的OMEGAMON XE for ...
在Java虚拟机(JVM)的运行过程中,有时会出现性能问题或者系统挂起的情况,这时候我们需要深入了解线程的运行状态,这就是"IBM thread dump文件分析工具"的作用所在。线程dump文件是JVM在特定时刻生成的一种快照,...
《深入解析JVM Dump分析与可视化工具》 在Java应用程序的开发和运行过程中,了解和诊断JVM(Java Virtual Machine)的状态至关重要。当系统出现性能问题或者异常时,通过生成和分析JVM Dump文件,我们可以深入理解...
1. **堆转储分析**:HeapAnalyzer可以读取由JVM生成的heap dump文件,这是在特定时刻Java堆的快照。通过这个快照,它可以显示所有对象及其引用关系,以便找出那些占用大量内存但未被释放的对象。 2. **对象概览**:...
例如,首先使用`jstat`监控JVM的实时状态,发现可能的性能问题后,用`jmap`生成heap dump,最后借助MAT进行深入的内存分析。通过这种方式,开发者可以找出内存泄漏、优化内存分配、改进垃圾收集效率,进而提升Java...