因为虚拟机导致的错误

-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError

以上参数:

-Xms20m:表示堆的最小值为20M

-Xmx20m:表示堆的最大值同样设置为20M,

-XX:+HeapDumpOnOutOfMemoryError:表示的意思是可以让虚拟机在出现内存溢出异常时Dump(倾倒,倾卸,垃圾场,倒垃圾)出当前内存堆转储快照以便事后进行分析。

 

Debug configuration中配置以上参数,运行一下代码:将出现最下面的异常。

-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError

当改变上面的数值的参数后,可以改变运行了的次数。

入以下代码:

package com.it;

 

import java.util.ArrayList;

import java.util.List;

 

publicclass HeapOOM {

    staticclass OOMObject{

    }

   

    publicstaticvoid main(String[] args) {

       int i = 0;

       List<OOMObject> list = new ArrayList<OOMObject>();

       while(++i<1005310){

           list.add(new OOMObject());

           System.out.println(i);

       }

    }

}

出现的异常如下:

1005306

1005307

1005308

java.lang.OutOfMemoryError: Java heap space

Dumping heap to java_pid4568.hprof ...

Heap dump file created [22044099 bytes in 0.464 secs]

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

    at java.util.Arrays.copyOf(Unknown Source)

    at java.util.Arrays.copyOf(Unknown Source)

    at java.util.ArrayList.ensureCapacity(Unknown Source)

    at java.util.ArrayList.add(Unknown Source)

    at com.it.HeapOOM.main(HeapOOM.java:14)

说明:(22044099/1024)/1024 = 21M,比配置过的参数多1M(一般比配置的数值大).此程序片段运行了1005308次,运行时间是0.464秒。出现的异常是堆内存溢出异常。

在运行以上程序片段期间,CPU使用率也将上升,几度为100%。运行之前的截图如下:

cads运行之后的截图如下:

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值