LHon(学习笔记)——分析OOM产生原因

JVM

在弄清楚OOM产生的原因之前,我们务必要搞清楚Java的内存模型,也就是JVM,这可以参考我之前的一个学习笔记 JVM学习笔记

先来看一下要用到的JVM的一些参数:

参数名称 含义
-Xms 初始堆大小
-Xmx 最大堆大小
-Xmn 年轻代大小
-Xss 每个线程的堆栈大小
-XX:+HeapDumpOnOutOfMemoryError 目录下生成堆的Dump文件

当初始化堆内存容量小于MinHeapFreeRatio 时,JVM会增大堆直到Xmx最大限制,当空余内存大于MaxHeapFreeRatio时,JVM会减小堆直到Xms最小限制,其中MinHeapFreeRatio和MaxHeapFreeRatio都是可以配置的。

OOM

OOM全称Out Of Memory,被称为是内存溢出(OutOfMemoryError),在JVM运行时的内存区域里,除了程序计数器,其它几个区域都可能会发生内存溢出的异常,下面主要来分析堆内存上面的OOM。

堆内存的OOM

接下来模拟一个堆上发生的OOM,编写Java代码,其思路就是往List集合里面无限放匿名对象:

package com.mezjh.test;

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

/**
 *
 * @author ZJH
 * @date 2020/8/12 14:48
 */
public class TestHeapOOM {
   

    public static void main(String[] args) {
   
        List<TestObject> list = new ArrayList<>();
        while (true) {
   
            list.add(new TestObject());
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值