一、背景
在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是分析Java堆内存的一个工具,全称是 The Eclipse Memory Analyzer Tool,用来帮助分析内存泄漏和减少内存消耗。使用MAT分析Java堆快照,可以快速计算出对象的保留大小(Retained Sizes),查找到阻止对象被回收...
JVM内存dump分析工具MAT独立安装包,分析内存溢出利器,可以准确定位内存异常原因,解决问题,MemoryAnalyzer-1.10.0.20200225.zip
1.7版本和1.10版本mat内存分析工具,适用不同的jdk环境,不同于eclipse集成的插件版,本工具是独立版本,运行在linux 64位的环境下,解压即可使用
Eclipse Memory Analyzer 是一个功能丰富且轻量的 Java 堆内存分析工具,可以用来辅助发现内存泄漏减 少内存占用。 使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对 ...
解压后运行MemoryAnalyzer.exe,可以独立Eclipse运行即可,查看、对比内存使用情况的工具
mat 内存泄露分析之MAT工具 MAT的全称是EclipseMemoryAnalyzer,一款...对于Eclipse来说,MAT也有插件版,但是不建议使用,因为独立版使用起来更加方便,即使不安装Eclipse也可以正常使用,当然前提是有内存分析后的hprof文件
Eclipse Memory Analyzer 是一个功能丰富且轻量的 Java 堆内存分析工具,可以用来辅助发现内存泄漏减少内存占用。 使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对象...
Ecplise 内存分析工具独立版,分析 dump 文件必备之选,
Math-Tools公司利用Matcom技术编写了Mideva工具软件,它可 以借用C++编译器将Matlab下的M文件转换为可被VisualBasic、Exe-cl以及Dephi调用的DLL(动态 链接库),亦可编译成独立的标准可执行文件,不需装载任何附加产品。...
是一款对android应用进行内存泄漏调查的很好用的工具,不同于eclipse集成的插件版,本工具是独立版本,运行在linux 64位的环境下,解压即可使用。
2.8.6 内存优化 2.9 小结 第3章 matlab混合编程简介 3.1 进行混合编程的出发点 3.2 matlab应用程序接口简介 3.3 几种常见的混合编程方法简介 3.3.1 使用matlab自带的matlab compiler 3.3.2 利用matlab引擎 3.3.3 ...
可以将交易型和分析型数据库与其他存储平台对接,在数 据库内部,通过外部表访问大数据存储平台中的数据,包括: a)与HDFS对接:外部表访问引擎(读写模块),通过调用HDFS的访问接口(InputF ormat,Out
10.6 使用MAT工具分析App内存状态 244 10.6.1 生成HPROF文件 244 10.6.2 分析HPROF文件 245 10.7 使用Dumpsys命令分析系统状态 247 第11章 搭建云端服务器 248 11.1 移动后端服务介绍 249 11.2 使用Bmob创建...
Jalpha查找表 14.3.3示例——将数据映射到颜色或透明度 14.4选择一个alpha查找表 第15章交互操作 15.1视点和相机 15.1.1用方位角和仰角设置视点 15.1.2交互工具——相机 15.2用相机工具条进行...