模拟java内存泄漏OutOfMemoryError
侧边栏壁纸
博主昵称
yuc

  • 累计撰写 291 篇文章
  • 累计收到 0 条评论

模拟java内存泄漏OutOfMemoryError

yuc
yuc
2024-05-31 / 最后修改: 2024-05-31 02:55 / 0 评论 / 5 阅读 / 正在检测是否收录...
如何模拟OOM

先上代码:

import java.util.ArrayList;
import java.util.List;

public class MemoryOverflowTest {
    public static void main(String[] args) {
        List<int[]> list = new ArrayList<>();
        try {
            while (true) {
                // 每次分配一个较大的数组
                int[] array = new int[1000000];
                list.add(array);
                System.out.println("Allocated: " + (list.size() * 1000000) + " ints");
            }
        } catch (OutOfMemoryError e) {
            System.err.println("OutOfMemoryError caught!");
            e.printStackTrace();
        }
    }
}

保存的文件名需要和 class 一致,也就是文件名应该为: MemoryOverflowTest.java

接着使用 javac 编译成 class: javac MemoryOverflowTest.java

现在就可以运行了,但是为了防止本机出现问题,建议运行的时候加上 Xmx 和 Xms 限制内存使用:

java -server -Xmx64m -Xms64m MemoryOverflowTest
0

评论

博主关闭了当前页面的评论