1.jstat jstat -gcutil pid 5s    //pid进程号 每隔5s监控一次内存回收情况 E 代表 Eden 区使用率:O(Old)代表老年代使用率    :P(Permanent)代表永久代使用率: CCS 压缩使用比例 M 元空间(MetaspaceSize)已使用的占当前容量百分比YGC(Young GC)代表Minor GC 次数:YGCT代表Minor GC耗时:FGC(Full GC)代表Full GC次数:FGCT(Full GC)代表Full GC耗时:GC…
dump生成:jmp -dump:live,format=b,file=/tmp/some.bin PID.其中,加上live表示只dump存活的对象. 线程栈信息生成:jstack PID > /tmp/file.txt 找出占用CPU最多的线程: top -p PID -h 找到占用CPU最多的线程号(此命令结果显示为PID,对应jstack里的nid) 获取jstack: 将上面找到的线id转为十六进制形式,通过grep命令可以从jstack里找到相应的线程信息 grep 'nid' -B…
Story background 回望2018年12月,这也许是程序员们日夜不得安宁的日子,皆因各种前线的系统使用者都需要冲业绩等原因,往往在这个时候会向系统同时写入海量的数据,当我们的应用或者数据库服务器反应不过来的时候,就会产生各种各样诡异的问题,诸如表现出来就是系统变得巨卡无比,无法使用,或者周期性卡顿,令人发指,用户轻则问候系统全家,重则心脏病发.总而言之每天都脑壳疼!归根到底是我们的应用服务器或数据库服务器因为扛不住流量造成的系统BUG问题暴露,诸如OOM等,呈现出机器的三高,这里说的…
为方便自己查看,根据工作遇到的问题,转载并整理以下jvm优化内容 有次接到客服反馈,生产系统异常,无法访问.接到通知紧急上后台跟踪,查看了数据库死锁情况--正常,接着查看tomcat 内存溢出--正常,再去跟踪流量--正常.没折了,把生产系统重起,刚开始几分钟,监控显示一切正常,过几分钟情况恢复正常.再去检查apache代理机,发现代理机长时间没有返回造成阻塞宕机.问题由此确定.接着查看了xxx.com/proxoolAdmin?alias=ec&tab=snapshot 数据连接池情况,发现连…
JDK 提供了一系列用于监控.诊断 Java 进程的工具,它们在 JDK 安装目录的 bin 目录下,有 jps.jcmd.jstack.jinfo.jmap 等.其中jmc.jconsole.jvisualvm 是 GUI 工具,其他大部分都是命令行工具. cd $JAVA_HOME/bin ls 本篇只是个入门介绍,不涉及深入分析.每一个工具都有它专门的作用,掌握使用方法只是很简单的入门阶段,更重要的是根据工具得到的信息去分析系统存在的问题以及性能瓶颈,每一个工具的使用和分析都可以单独成文.…
本文首发于微信公众号:javaadu 简单介绍 构建高性能的Java应用过程中,必然会遇到各种各样的问题,像CPU飙高.内存泄漏.应用奔溃,以及其他疑难杂症,这时可以使用Serviceability Agent(SA).SA是JDK提供的一个强大的调试工具集,适用于语言层和虚拟机层,支持调试运行着的Java进程.core文件和虚拟机crash之后的dump文件. SA的优点:可以呈现出类对象.能够识别出Java堆.堆边界.堆内对象.载入的类描述.栈内存.线程状态等信息. 安装 首先,我使用的操作…
一. jmap // 打印jvm的堆状况,主要是年轻代和老年代信息 jmap -heap <pid> 如: Heap Configuration: MinHeapFreeRatio = MaxHeapFreeRatio = MaxHeapSize = (.0MB) NewSize = (.25MB) MaxNewSize = MB OldSize = (.1875MB) NewRatio = SurvivorRatio = PermSize = (.75MB) MaxPermSize = (.…
JVM监控和调优 在Java应用和服务出现莫名的卡顿.CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非常方便了.本文总结了最常用的命令行工具及其常用参数解释,图形化监控工具的用法,仅供参考. jps Java版的ps命令,查看java进程及其相关的信息,如果你想找到一个java进程的pid,那可以用jps命令替代linux中的ps命令了,简单而方便. 命令格式: jps [options] [hos…
JDK8加载源码分析 1.概述 现在大多数互联网公司都是使用java技术体系搭建自己的系统,所以对java开发工程师以及java系统架构师的需求非常的多,虽然普遍的要求都是需要熟悉各种java开发框架(如目前比较流行ssi或者ssh框架),但是对于java语言本身的理解才是本质.如果你熟悉jvm原理以及jdk本身的实现,我相信对于其他开发框架的学习和深入理解应该不是很困难,因为很多灵活和高大山的框架都使用了jdk最核心的功能.除了本身框架的使用之外,凡是使用java语言开发的系统都避免不了对jv…
maven是使用java启动的,因此依赖JVM,那么如何修改JVM参数? MAVEN_OPTS 在系统的环境变量中,设置MAVEN_OPTS,用以存放JVM的参数,具体设置的步骤,参数示例如下: MAVEN_OPTS=-Xms256m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256M 或者临时设置 export MAVEN_OPTS=-Xms256m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256M 在m…