jstat的使用/jam的使用/使用MAT分析内存溢出/

2.通过jmap监控内存使用情况

2.1 监控堆内存   jamp -heap 12840

2.2 监控内存中对象的数量及其大小

查看所有对象的数量以及大小包括类型:jmap -histo 14116 | more

查看所有对象的数量以及大小包括类型:jmap -histo:live 14116 | more

2.3 通过jmap导出堆内存使用情况的文件

2.4  通过jhat查看dump文件并且进行分析,启动一个HTTP端口进行访问,通过该端口可以查看到整个应用程序所使用的的所有对象的情况,提供OQL进行检索

2.5 页面访问

3.使用MAT分析工具   在工具中可以查看到对象数量以及内存使用的情况,当然可以分析出可能出现问题

3.1 解压mat分析工具双击

3.2 双击后效果

3.3 点击overview

4. 模拟内存溢出

4.1 编写代码

public static void main(String[] args) {
        List<Object> objectList=new ArrayList<>();
        for (int i=0;i<10000000;i++){
            String str="";
            for (int j=0;j<1000;j++){
                str+= UUID.randomUUID().toString();
            }
            objectList.add(str);
        }
        System.out.println("添加数据成功~");
    }

4.2 设置VM options参数  -Xms8m -Xmx8m -XX:+HeapDumpOnOutOfMemoryError

4.3 控制台效果

4.4 生成一个文件

4.5 使用MAT工具打开刚刚生成的文件查看

4.6 数组内存储了大量的字符串

原文地址:https://www.cnblogs.com/1314Justin/p/12411321.html

时间: 2024-10-08 01:21:43

jstat的使用/jam的使用/使用MAT分析内存溢出/的相关文章

使用Memory Analyzer tool(MAT)分析内存泄漏

前言 在平时工作过程中,有时会遇到OutOfMemoryError,我们知道遇到Error一般表明程序存在着严重问题,可能是灾难性的.所以找出是什么原因造成OutOfMemoryError非常重要.现在向大家引荐Eclipse Memory Analyzer tool(MAT),来化解我们遇到的难题.如未说明,本文均使用Java 5.0 on Windows XP SP3环境. 为什么用 MAT 之前的观点,我认为使用实时profiling/monitoring之类的工具,用一种非常实时的方式来

Android 性能优化之使用MAT分析内存泄露问题

我们平常在开发Android应用程序的时候,稍有不慎就有可能产生OOM,虽然JAVA有垃圾回收机,但也不能杜绝内存泄露,内存溢出等问题,随着科技的进步,移动设备的内存也越来越大了,但由于Android设备的参差不齐,可能运行在这台设备好好的,运行在那台设备就报OOM,这些适配问题也是比较蛋疼的,比如我们平常运行着一个应用程序,运行的好好的,突然到某个Activity就给你爆出一个OOM的错误,你可能会以为是这个Activity导致的内存泄露,你会想到也有可能是内存有泄露吗?内存泄露就像一个定时炸

Android Studio和MAT结合使用来分析内存问题

Android开发中时常会遇到内存泄漏的问题,而Android系统对单个App又有一定的内存限制,此值可以通过一下方式获取: ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); int memoryClass = am.getMemoryClass(); 上述代码中momeryClass的值可以当做每个App的内存限制.这个值根据不同的设备厂商都是不一样的,比如我的模拟器的值是32M,

jmap MAT内存溢出实践

一.创建Spring Boot工程 进入https://start.spring.io/网站,配置如下图 点击创建工程,然后用Idea或者Eclipse打开 二.创建模拟Heap内存溢出的代码 1.创建MemoryController类 2.创建User类 public class User { private int id; private String name; public User(int id, String name) { this.id = id; this.name = nam

如何用MAT分析Android应用内存泄露

使用工具:Android Studio 2.0 Preview, Android Device Monitor, MAT(Memory Analyzer). 点击Android Studio工具栏上的“Android Device Monitor”,如下图 打开后选中应用进程,然后点击“Update heap”,接着反复点击应用的每个activity,最后“Dump HPROF file”,如下图1-2-3所示 保存hprof文件. 下面需要对hprof文件进行转换. 打开CMD终端,进入到\s

在Eclipse中使用MAT分析Android程序内存使用状况(转)

对于Android这种手持设备来说,通常不会带有太大的内存,而且一般用户都是长时间不重启手机,所以编写程序的时候必须要非常小心的使用内存,尽量避免有内存泄露的问题出现.通常分析程序中潜在内存泄露的问题是一件很有难度的工作,一般都是由团队中的资深工程师负责,而且随着程序代码量的提高,难度还会逐步加大. 今天要介绍一个在Eclipse中使用的内存分析工具——MAT(Eclipse Memory Analyzer,主页在http://www.eclipse.org/mat/).它是一个功能非常丰富的J

Java程序内存分析:使用mat工具分析内存占用

在工作中可能会遇到内存溢出这种灾难性的问题,那么程序肯定是存在问题,找出问题至关重要,上一篇文章讲了jmap命令的使用方法,当然用jmap导出的文件我们也看不懂啊,那就交给memory analyzer(mat)这个工具,让他帮助我们来观察程序的内存分布情况吧. 1. 用jmap生成堆信息 2. 将堆信息导入到mat中分析 3. 生成分析报告 Histogram Dominator Tree Top consumers Leak Suspects MAT 不是一个万能工具,它并不能处理所有类型的

使用MAT分析Java内存

Overview MAT(Memory Analyzer Tool) 是一个JAVA Heaper分析器,可以用来分析内存泄露和减少内存消耗.分析Process showmap中的/dev/ashmem/dalvik-heap(deleted)一项所占用的Memory.可以参考我写的使用showmap分析系统内存占用情况一文. 下面就将一下如何使用Eclipse MAT分析Android应用程序内存的消耗.所需要的是已经安装ADT和SDK的Eclipse.然后可以在http://www.ecli

深度分析内存泄漏原因,使用MAT工具检测内存泄露和性能

造成内存泄漏原因: 场景一:静态变量导致的内存泄漏 例如:mainactivity中 private static context scontext: @override protected void oncreat(bundle savedinstancestate){ ............................................. scontext=this; } 泄漏点:静态变量scontext引用,activity无法正常销毁 场景二:单例模式导致的内存泄漏