内存溢出

编写代码

package com;

import java.util.HashMap;
import java.util.Map;

public class TestHeapOOM {
static class Key {
Integer id;

Key(Integer id) {
this.id = id;
}

@Override
public int hashCode() {
return id.hashCode();
}
}

public static void main(String[] args) {
Map<Key, String> m = new HashMap<>();
while (true) {
System.out.println("--");
for (int i = 0; i < 10000; i++) {
Key key = new Key(i);
m.put(key, "Number:" + i);
}
}
}
}
在idea中打成jar包
在命令行运行 java -jar jar包名称.jar

用jstat -gc 14556 2000 100 命令看到老年代一直增加
用jvisualVM打开查看看到老年代一直增加

同步骤 1、2,点击,堆 dump, 进入监控界面,点击切换至类选项卡如下图所示。

结果终于被我找到这小子了,原来是它搞的鬼,创建了9314个char数组对象。

双击这个类名,找到问题如下图所。

找到问题后,接下来就是优化程序的事了。

 

posted @ 2021-05-12 14:50  minxiaofeng10  阅读(51)  评论(0编辑  收藏  举报