Java堆溢出

12 篇文章 0 订阅
1 篇文章 0 订阅

编写Java堆溢出代码

代码清单如下

import java.util.*;
/**
 * Java堆内存溢出异常测试
 * VM args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
 **/
public class OOME {

    static class OOMObject{

    }
    public static void main(String [] args)
    {
        List<OOMObject> list  =  new ArrayList<OOMObject>();
        while(true){
            list.add(new OOMObject());
        }
    }
}


配置运行

Run -> Run Configuratinos配置如下:
Configurations
在VM args处限制Java堆的大小为20MB,不可扩展(将堆的最小值-Xms参数与最大值参数-Xmx参数设置为一致即可避免堆的自动扩展),通过参数-XX:+HeapDumpOnOutOfMemoryError可以让虚拟机在出现内存溢出异常时Dump处当前的内存堆转储快照以便事后进行分析。


运行结果

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid14096.hprof …
Heap dump file created [27960943 bytes in 0.078 secs]
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space


MAT打开堆转储快照文件

简单描述一下Eclipse中Memory Analysis tools插件的安装和使用,以下简称MAT。

  1. 安装
    打开Eclipse-> Eclipse Marketplace下搜索Memory
    然后直接安装Memory Analyzer
  2. 打开
    打开Windows->Perspective->Open Perspective->Other
    得到下图的界面,点击Memory Analysis再点OK
    这里写图片描述
  3. 打开快照文件
    File->Open Heap Dump,然后到eclipse的workplace 打开产生的 java_pid14096.hprof 文件,得到如下图:
    这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值