公司的一个web应用项目运行了很长一段时间,达半年之久,前段时间突然出现了服务不可用的情况,所有的请求都不可达,服务彻底挂了.查看tomcat进程还在,cpu使用率低,一时没找着问题,重启了服务.过了两天,又出现了这种情况, 开始排查最近更新上线的代码,但是也没有发现可疑之处.           开始怀疑JVM内存不够用了,通过jmap/jstat查看后,也没有发现存在JVM内存不够用,或者GC太频繁或者是FGC耗时太久的情况.           接着下来用jstack -F pid 把所有…
掌握java自带的这些监控工具,有助与我们很好的分析问题和jvm性能调优秀.收集了些网上整理很好的文章. Java监控工具.调优.调试辅助函数 Java自带的GUI性能监控工具Jconsole以及JisualVM简介 JDK自带监控工具…
简介 jstack 主要用于生成虚拟机当前时刻的「线程快照」.线程快照是当前 Java 虚拟机每一条线程正在执行的方法堆栈的集合. 生成线程快照的主要目的是用于定位线程出现长时间停顿的原因,如线程间死锁.死循环.请求外部资源导致长时间等待. 基础 线程的几种状态 NEW,未启动的.不会出现在Dump中. RUNNABLE,在虚拟机内执行的. BLOCKED,受阻塞并等待监视器锁. WATING,无限期等待另一个线程执行特定操作. TIMED_WATING,有时限的等待另一个线程的特定操作. TE…
javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码.通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作,有助与我们更加理解java特性. javap(反汇编命令)详解 使用javap反编译Java字节码文件 Eclipse集成javap查看字节码 在eclipse中使用javap Bytecode Outline plugin 插件查看字节码    http://asm.ow2.org/eclipse/index.html…
ref:http://www.hollischuang.com/archives/308 一.常用命令 jps: 查看本机的Java中进程信息. jstack: 打印线程的执行栈信息. jmap: 打印内存映射,制作堆Dump. jstat: 性能监控工具. jhat: 内存分析工具. jconsole:简易的可视化控制台. jvisualvm:功能强大的控制台. 二.什么是Java Dump Java虚拟机的运行时快照.将Java虚拟机运行时的状态和信息保存到文件. 线程Dump,包含所有线程…
今天面试有一道题,写一个死锁的程序,自己也是短路了,没写出来,回来写下. 死锁常见的情况是A线程持有a锁.阻塞于b锁,B线程持有b锁,阻塞于a锁,形成一个循环阻塞的状态. import java.util.concurrent.TimeUnit; public class CyclicLock { private static Object o1 = new Object(); private static Object o2 = new Object(); public static void…
JDK内置工具使用 一.javah命令(C Header and Stub File Generator) 二.jps命令(Java Virtual Machine Process Status Tool) 三.jstack命令(Java Stack Trace) 四.jstat命令(Java Virtual Machine Statistics Monitoring Tool) 五.jmap命令(Java Memory Map) 六.jinfo命令(Java Configuration Inf…
一.概要: jps -l 查看现有的java进程 jps -l 显示所有正在运行的java进程id   jstack 查看Java线程      jstack -l pid; 做thread dump,直接打印在串口     jstack pid>> ./threaddumps  输出到指定文件分析   jmap 查看Java内存使用情况         jmap -histo:live pid 对象占用内存排名     jmap -dump:file=memroydumps pid 把hea…
注意:可能随着JDK的版本升级,工具也会随着增多. JDK(Java Development Kit)是Java程序员最核心的开发工具,没有之一. JDK是一个功能强大的Java开发套装,它不仅仅为我们提供了Java运行环境,还给开发人员提供了许多有用的开发组件(位于bin目录中,如下图所示).仅仅使用JDK,就能够解决我们在Java开发过程中遇到的许多问题. 下面,我们就按照工具文件名称的英文顺序来逐一介绍JDK内置的工具. 工具名称 描述 appletviewer.exe 用于运行并浏览ap…
如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然.别慌,这里有一款低开销.自带火焰图.让你大呼好用的 Java 性能分析工具 - async-profiler. 最近 Arthas 性能分析工具上线了火焰图分析功能,Arthas 使用 async-profiler 生成 CPU/内存火焰图进行性能分析,弥补了之前内存分析的不足.在 Arthas 上使用还是比较方便的,使用方式可以看官方文档.这篇文章介绍 async-profiler 相…