最近在生产环境遇到一个问题,正常情况下,ECS CPU始终保持在10%以下,内存也只占用40%左右,但是连续2天出现了CPU占用100%的情况,然后系统卡住.看阿里云的ECS监控,能看到CPU飙到了100%. 再去查日志,发现了有内存溢出的错误GC overhead limit exceeded 这个异常是GC在尝试多次回收后,都回收了不到2%才抛出.一直尝试回收,却一直回收不到2%形成了恶性循环,导致CPU也飙到100%.可以肯定的是一定触发了什么操作才导致这种情况的发生.但是日志当中又看不到…
IBM HeapAnalyzer是一款免费的JVM内存堆的图形分析工具,它可以有效的列举堆的内存使用状况,帮助分析Java内存泄漏的原因. 功能与MAT类似. 1.下载 https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=4544bafe-c7a2-455f-9d43-eb866ea60091 下载下来是一个jar包.ha456.jar 2.运行环境要求 ha45…
为了分析java应用的内存泄漏,使用thread dump往往解决不了问题.使用jstat[eg:jstat-gcutil pid 1000 5]工具查看运行的java应用的heap size,perm size ,survivor ratio等,当时你无法知道是什么对象把堆填满了. 什么是 Java heap dump 首先需要搞懂什么是java heap,java heap是分配给实例类和数组对象运行数据区,所有java线程在运行期间共享heap中的数据.Java heap dump相当于j…
一.前言 在本文中,我们总结下抓 Java dump 的几种不同方法. Java Heap Dump 是特定时刻 JVM 内存中所有对象的快照.它们对于解决内存泄漏问题和分析 Java 应用程序中的内存使用情况非常有用. Java Heap Dump 通常以二进制格式的 hprof 文件存储.我们可以使用 jhat 或 JVisualVM 之类的工具打开和分析这些文件.同样,使用 MAT 工具分析是很常见的. 二.JDK 工具包 JDK 附带了几个以不同方式 Heap Dump 的工具.所有这些…
从网上抄过来的,因为经常碰到这个问题,记录一下. java.lang.OutOfMemoryError: Java heap space 解决方法 这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个. 1.可以在windows 更改系统环境变量 加上JAVA_OPTS=-Xms64m -Xmx512m 2,如果用的tomcat,在windows下,可以在 C:\tomcat5.5.9\bin\catalina.bat  中加上: set…
jhat 是Java堆分析工具(Java heap Analyzes Tool). 在JDK6u7之后成为标配. 使用该命令需要有一定的Java开发经验,官方不对此工具提供技术支持和客户服务. 用法: jhat [ options ] heap-dump-file 参数: options 可选命令行参数,请参考下面的 Options heap-dump-file 要查看的二进制Java堆转储文件(Java binary heap dump file). 如果某个转储文件中包含了多份 heap d…
在JVM中如果98%的时间是用于GC(Garbage Collection)且可用的 Heap size 不足2%的时候将抛出异常信息,java.lang.OutOfMemoryError: Java heap space.  所以产生这个异样的原因通常有两种: 1.程序中出现了死循环 2.程序占用内存太多,超过了JVM堆设置的最大值. 对于第一种情况,需要自己查看程序代码,这里不再多说. 第二种情况,我们手工扩大JVM堆的参数设置.JVM堆的设置是指java程序运行过程中JVM可以调配使用的内…
引用自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c4224614143bbae87a221207d0d82f2747f41802bded602571507be9dad58f49d8b9972b2b8933712d5cd04e53914aef925125b061d70ab6f45ff0bb806ac0ea81c4de2444ca24127bf0aed80655…
引起java.lang.OutOfMemoryError: Java heap space异常,可能是由JAVA的堆栈设置太小的原因 根据网上的答案大致有以下两种解决方法: 1.在D:/apache-tomcat-6.0.18/bin/catalina.bat最前面加入:set JAVA_OPTS=-Xms384m -Xmx384m 注意:只有startup.bat启动tomcat,设置才能生效,如果利用windows的系统服务启动tomcat服务,上面的设置就不生效了, 就是说set JAVA…
浏览Heap Dump 可以使用VisualVM浏览heap dump文件的内容,从而快速查看在堆中分配的对象.Heap dumps在主窗口的heap dump子标签页中显示.你可以打开保存在本地的heap dump文件(.hprof)或者使用VisualVM捕获正在运行的程序的heap dumps. 一个heap dump是Java虚拟机(JVM)在某一时刻所有对象的快照.JVM从堆中为所有的类实例和数组分配内存.当一个对象不再被使用并且没有对它的引用时,垃圾回收器回收其堆内存.通过查看堆,你…