一、背景
在java程序运行中发生OOM的时候,我们可以使用强大的内存分析工具MAT进行问题跟踪,但由于习惯了使用idea开发,再为了MAT下载个eclipse太麻烦,所以安装MAT独立版。
二、安装
下载地址:https://eclipse.org/mat/downloads.php,如下
选择自己系统相应的版本下载,下载完得到一个zip文件,笔者这里使用的是Mac OSX (Mac/Cocoa x86_64),解压后得到mat文件
如果这里双击打开没问题,则可以开始正常使用了;如果双击提示异常,那么继续往下看,提示如下
按照提示路径进入日志文件,异常信息: java.lang.IllegalStateException: The platform metadata area could not be written: /private/var/folders/d_/9dsdb3jd0bbg2lq9kvhdlvz00000gn/T/AppTranslocation/13816EDC-675E-4D44-9337-C5A7658C046A/d/mat.app/Contents/MacOS/workspace/ .metadata. By default the platform writes its content under the current working directory when the platform is launched. Use the -data parameter to specify a different content area for the platform. at org.eclipse.core.internal.runtime.DataArea.assertLocationInitialized(DataArea.java:61) at org.eclipse.core.internal.runtime.DataArea.getStateLocation(DataArea.java:129) at org.eclipse.core.internal.preferences.InstancePreferences.getBaseLocation(InstancePreferences.java:44) at org.eclipse.core.internal.preferences.InstancePreferences.initializeChildren(InstancePreferences.java:199) at org.eclipse.core.internal.preferences.InstancePreferences.<init>(InstancePreferences.java:59) at org.eclipse.core.internal.preferences.InstancePreferences.internalCreate(InstancePreferences.java:209) at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferences.java:391) at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferences.java:379) at org.eclipse.core.internal.preferences.PreferencesService.createNode(PreferencesService.java:389) at org.eclipse.core.internal.preferences.RootPreferences.getChild(RootPreferences.java:63) at org.eclipse.core.internal.preferences.RootPreferences.getNode(RootPreferences.java:101) at org.eclipse.core.internal.preferences.RootPreferences.node(RootPreferences.java:90) at org.eclipse.core.internal.preferences.AbstractScope.getNode(AbstractScope.java:38) at org.eclipse.core.runtime.preferences.InstanceScope.getNode(InstanceScope.java:80) at org.eclipse.ui.preferences.ScopedPreferenceStore.getStorePreferences(ScopedPreferenceStore.java:229) at org.eclipse.ui.preferences.ScopedPreferenceStore.<init>(ScopedPreferenceStore.java:133) at org.eclipse.ui.plugin.AbstractUIPlugin.getPreferenceStore(AbstractUIPlugin.java:288) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:620) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:606) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) at org.eclipse.mat.ui.rcp.Application.start(Application.java:26) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608) at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
这是eclipse的一个bug,记录地址:https://bugs.eclipse.org/bugs/show_bug.cgi?id=339647#c5
解决办法(以mac为例)
右键mat显示包内容,进入Contents->MacOS下面,会有一个MemoryAnalyzer的命令。
打开终端,进入此路径找到MemoryAnalyzer,运行
./MemoryAnalyzer -data ./dump
成功启动,当然敲全路径启动也是可以的,dump文件名可以自定义。
相关推荐
MAT(Memory Analyzer Tool)是Eclipse项目开发的一款强大的Java内存分析工具,主要用于诊断Java应用程序的内存泄漏和性能问题。在标题中提到的“Eclipse Memory Analyzer Version 1.7.0.rar”是一个压缩包,其中...
MAT是分析Java堆内存的一个工具,全称是 The Eclipse Memory Analyzer Tool,用来帮助分析内存泄漏和减少内存消耗。使用MAT分析Java堆快照,可以快速计算出对象的保留大小(Retained Sizes),查找到阻止对象被回收...
**Android MAT内存分析工具详解** MAT(Memory Analyzer Tool)是由Eclipse基金会开发的一款强大的Java堆内存分析工具,虽然在Android Studio中内置了内存分析功能,但若需要更深入的内存泄漏检测和性能优化,MAT...
在给定的压缩包“MAT内存分析工具.zip”中,包含了两个不同版本的MAT:MemoryAnalyzer-1.7.0.20170613-linux.gtk.x86_64.zip和MemoryAnalyzer-1.10.0.20200225-linux.gtk.x86_64.zip。这两个版本分别对应于2017年6月...
### 内存分析工具MAT使用详解 #### 一、MAT简介 MAT(Memory Analyzer Tool)是一款功能强大且易于使用的内存分析工具,它基于Eclipse平台,主要用于帮助开发人员定位和解决Java应用程序中的内存泄漏问题。MAT能够...
《MAT for Mac:独立版内存分析工具的深度解析》 Memory Analyzer Tool,简称MAT,是Oracle公司开发的一款强大的Java内存分析工具,专用于诊断和优化Java应用的内存使用情况。MAT独立版为Mac用户提供了在操作系统...
MAT,全称Memory Analyzer Tool,是由Eclipse基金会开发的一款强大的Java内存分析工具。它主要用于诊断Java应用程序中的内存泄漏和分析内存消耗情况,是Java开发者在优化应用性能时不可或缺的利器。MAT工具以其丰富...
本文将详细讲解如何使用Memory Analyzer Tool (MAT) 这款强大的工具来分析Tomcat的内存溢出问题。 MAT是IBM开发的一款专门用于分析Java heap dump的工具,它可以帮助开发者深入理解内存分配、对象生命周期以及内存...
Eclipse Memory Analyzer Tool (MAT) 是一款强大的Java堆内存分析工具,主要用于诊断和解决Java应用程序中的内存泄漏问题。它能够帮助开发者深入理解JVM内存结构,找出占用内存过大的对象和引用链,从而优化程序性能...
内存分析是Java应用程序性能优化的关键环节,而Memory Analyzer Tool (MAT) 是IBM开发的一款强大的内存分析工具,专门用于诊断Java应用程序中的内存泄漏和性能问题。MAT不仅提供了详细的内存使用报告,还能帮助...
6. **内存分析工具使用方式**:MAT工具既可以直接下载独立版本使用,也可以作为插件嵌入到Eclipse集成开发环境中使用。文档中提到,如果是使用其他集成开发环境(IDE),可以考虑使用MAT的独立版本。 ### 描述知识...
MAT,全称Memory Analyzer Tool,是由Eclipse基金会开发的一款强大的Java内存分析工具。这款工具的主要功能是帮助开发者诊断和优化应用程序的内存使用情况,从而预防和解决Java应用中的内存泄漏问题。MAT 1.8.0是其...
MAT,全称Memory Analyzer Tool,是由Eclipse基金会开发的一款强大的Java内存分析工具。这款软件的主要功能是帮助开发者诊断和解决Java应用程序中的内存泄漏问题,从而优化应用性能。MAT的1.7.0.20170613-win32.win...
Eclipse Memory Analyzer 是一个功能丰富且轻量的 Java 堆内存分析工具,可以用来辅助发现内存泄漏减 少内存占用。 使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对 ...
mat 内存泄露分析之MAT工具 MAT的全称是EclipseMemoryAnalyzer,一款...对于Eclipse来说,MAT也有插件版,但是不建议使用,因为独立版使用起来更加方便,即使不安装Eclipse也可以正常使用,当然前提是有内存分析后的hprof文件
Eclipse Memory Analyzer Tool(MAT)是一款专门用于Java应用程序内存分析的强大工具。它不仅适用于初学者,也深受经验丰富的开发者的喜爱。MAT可以帮助用户高效地检测并解决内存泄漏问题、分析堆转储文件、优化内存...
MAT,全称Memory Analyzer Tool,是Eclipse基金会提供的一款强大的Java内存分析工具,主要用于分析Java应用程序的内存使用情况,特别是对堆内存的深入分析。它能够帮助开发者定位内存泄漏、过大对象以及引用链过长等...
内存分析是Java应用程序性能优化的关键环节,而Memory Analyzer Tool (MAT) 是IBM提供的一款强大的、独立的内存分析工具,它并非作为Eclipse的集成插件存在。MAT的强大之处在于其能够帮助开发者深入理解应用程序的...
MemoryAnalyzer(MAT)就是这样一个强大的Java内存分析工具,特别适用于那些不希望在Eclipse集成环境中使用插件的开发者。本文将详细介绍MAT的使用和功能,帮助你更好地理解和解决Java内存问题。 MAT,全称为Memory...
本文将详细介绍Android平台上的内存管理方法,特别是如何利用DDMS(Dalvik Debug Monitor Service)和MAT(Memory Analyzer Tool)这两种强大的工具进行内存检测、跟踪和分析。 #### 二、内存分配跟踪工具:DDMS - ...