问题
线上某一台机器出现异常.接口调用的rt达到了万级别..基本可以判断这个机器已经挂了.进而分析该机器一直在fgc.然后马上dump内存,进而进行分析(中间一些异常的gc日志没有截图).之前学习的jvm知识都是纯理论的,这次是实打实线上出现的问题.所以记录一下.
步骤
1 先dump对应的堆,然后从线上发到自己本机
dump的命令是
2 下载一个MAT工具
如果没有eclipse的话,还需要下载eclipse
mat的下载网址
http://www.eclipse.org/mat/downloads.php
找一个最合适自己的下载完..
3 调整eclipse的内存
具体的数值,需要看dump的文件大小.比如我的dump文件是1.3G,我就给了eclipse 2G的内存..据说有些dump文件有几十个G的大小,那么分析的机器也必须比这个大才行,否则eclipse本身就OOM了.
4 分析.
调整到 Memory Analysis 窗口,然后File->Open Heap Dump
然后选择dump的文件,然后MAT就自动会进行分析..分析完了,直接查看 Leak Suspects Report . MAT会自动帮你找内存泄露的疑凶.然后给你
点下面的Detail .可以看到最直观的类和所占用的大小
可以看到, IosPushClient 的直接引用是40byte 但是对应的间接引用达到了恐怖的420M 那么再点击该类,list obejcts .重点看间接引用占用的大的
接上图(截不下了.哈哈)
可以看到这个LinkedHashMap中,有47528个1776byte的对象.
其实看到这里,就基本清楚了.这个是由于在push的时候把对应的push消息给保留住,然后造成一直堆积在内存中造成的..
解决
在不修改对应的push底层实现的前提下,每次push了2W条消息就清理一次.后续有时间再修改底层逻辑吧.
相关推荐
这个文件最重要的作用就是分析 Java 堆内存泄露问题,heap analyzer,MAT 等工具都可以分析这种文件。 Java core 文件保存的是 java 应用程序在崩溃时或任一时刻关于 Java 运行环境的各种信息。包括 Java 虚拟机的...
1. 使用分析工具打开HeapDump文件,查看总体内存占用情况,识别占用内存最多的类和实例。 2. 分析大对象,检查是否有内存泄漏的迹象,如长生命周期的临时对象或者不再使用的对象占用大量内存。 3. 查看类加载器信息...
Java内存dump分析和Thread Dump(Java Core)是Java性能调优中的重要环节,它们能帮助开发者定位和解决系统中的各种问题,如内存泄漏、线程阻塞等。下面将详细介绍这两个概念及其分析工具。 首先,Java堆内存dump,...
综上所述,"jca-分析javacore和dump.zip"这个压缩包提供了对Java应用程序进行深入诊断的工具和指南,对于解决性能问题和优化内存管理具有重要价值。通过正确使用这些工具,开发者可以更好地理解和解决问题,提升Java...
使用如MAT(Memory Analyzer Tool)、YourKit等专业工具进行分析,可以提供详细的内存分配和对象引用图,帮助开发者有效地解决内存问题。 最后,`反编译`是指将已编译的Java字节码转换回可读的源代码。这在没有源...
JCA工具专门设计用于解析和分析javacore和heapdump文件,如IBM的VisualVM、Eclipse Memory Analyzer (MAT)、YourKit Java Profiler等。这些工具提供图形化的界面,使得分析过程更为直观。例如,MAT能帮助用户找到...
使用MAT进行堆栈分析时,通常需要先获取JVM的heap dump文件,这可以通过JVM的命令行选项(如`-XX:+HeapDumpOnOutOfMemoryError`或通过JVisualVM等工具手动触发)。然后,将这个dump文件导入MAT进行分析。MAT会解析...
5. **分析文件**:生成的javacore和heapdump文件可以用专门的分析工具打开,如IBM Heap Analysis Tool (HAT),Eclipse Memory Analyzer (MAT)等,它们能提供可视化的分析结果,帮助找出问题。 6. **注意问题**:在...
使用IBM的`jmap`命令或者第三方工具如MAT (Memory Analyzer Tool) 分析这些数据,可以定位到导致问题的具体代码段。 `run_ha_deapdump.bat` 和 `run_jca_javacore.bat` 这两个批处理文件可能是用来自动化触发Java...
分析Heapdump文件通常需要借助专业的分析工具,如MAT(Memory Analyzer Tool),Eclipse Memory Analyzer等。这些工具可以帮助识别内存中的对象实例、内存泄漏源头、大对象的统计信息等。 ### 6. 关于Javadump的...
- **MAT (Memory Analyzer Tool)**:主要用于分析内存泄漏,但也可用于分析Thread Dump。 5. **解决问题** - **优化同步机制**:使用更高效的同步策略,如使用ReentrantLock代替synchronized。 - **避免长时间...
IBM的IBM Memory Analyzer (MAT)是一款强大的heapDump分析工具,它可以分析heapdump文件,提供详细的内存使用报告,帮助开发者有效地找出并解决内存问题。 再者,javaCore日志是IBM JVM在遇到严重错误或异常时生成...
对于JVM Dump的分析,通常我们会用到一些专门的工具,例如IBM的JConsole、VisualVM、MAT(Memory Analyzer Tool)等。这些工具可以读取Dump文件,并以图形化的方式展示内存分配、对象引用链、类加载情况等,方便我们...
通过gdb或其他工具分析core dump,可以详细地了解段错误发生时的内存布局和变量状态。 4. 使用valgrind: Valgrind是一个用于内存调试、内存泄漏检测和性能分析的工具,它可以发现诸如段错误、未初始化的内存访问、...
### Java学习文档:分析Heap Dump以确定应用内存占用 ...此外,Memory Analyzer (MAT)工具是进行此类分析的强大工具,它提供了直观的界面和丰富的功能来帮助开发者深入了解Java应用的内存使用情况。
- **打印结果**:使用`System.out.println("mat="+mat.dump());`输出矩阵信息。 2. **代码示例**: ```java import org.opencv.core.Core; import org.opencv.core.CvType; import org.opencv.core.Mat; ...
- **Eclipse Memory Analyzer (MAT)**:MAT是一款开源工具,不仅可以用于分析内存使用情况,还支持对Javacore文件进行深入分析,以帮助诊断Java应用程序中的性能问题。 #### 如何查找死锁信息 在Javacore文件中,...
import org.opencv.core.Mat; import org.scijava.nativelib.NativeLoader; public class HelloWorld { public static void main(String[] args) throws Exception { NativeLoader.loadLibrary(Core.NATIVE_...
这些流程包括使用IBM提供的内存分析工具,如Memory Analyzer Tool (MAT),以及通过命令行工具如jmap来获取内存转储(heap dump)和运行时内存使用的快照。分析工具可以帮助开发者识别内存中对象的保留树(Retained ...
案例分析中涉及了使用topas检查CPU消耗,并对JVM进程进行Native线程分析,最终生成javacore文件。 综上所述,WebLogic使用手册涉及到的IT知识点包括但不限于:WebLogic的性能调优、线程转储和堆转储的获取与分析、...