JVM的Heap的内存调优,并通过调节Heap的大小实现OOM异常

IDEA上调节JVM的大小

       参数:-Xms:初始的堆内存的容量大小(默认电脑内存的1/64)

                  -Xmx:最大堆内存的大小,(默认电脑内存容量的1/4)

代码查看:初始JVM的内存大小:

package com.thekingqj;

import org.omg.SendingContext.RunTime;

import java.util.Random;

public class JVMOptimize {


    public static void main(String[] args) {
        Runtime runtime = Runtime.getRuntime();
        long maxMemory = runtime.maxMemory();
        long totalMemory = runtime.totalMemory();
        System.out.println("heap的最大内存为:"+((double)maxMemory/1024/1024)+"MB");
        System.out.println("heap的最大内存为:"+((double)totalMemory/1024/1024)+"MB");
    }
}

 调节JVM内存

-Xms8m -Xmx8m -XX:+PrintGCDetails(调优是最好初始容量和最大容量一样,防止内存的抖动,影响性能)

调节成8MB后实现OOM异常

package com.thekingqj;

import org.omg.SendingContext.RunTime;

import java.util.Random;

public class JVMOptimize {


    public static void main(String[] args) {
        Runtime runtime = Runtime.getRuntime();
        long maxMemory = runtime.maxMemory();
        long totalMemory = runtime.totalMemory();
        System.out.println("heap的最大内存为:"+((double)maxMemory/1024/1024)+"MB");
        System.out.println("heap的最大内存为:"+((double)totalMemory/1024/1024)+"MB");

        String str = "www.atguigu.com" ;
        while(true)
        {
            str += str + new Random().nextInt(88888888) + new Random().nextInt(999999999) ;
        }

    }
}

产生OOM异常时Full GC通过垃圾回收发现,老年代没有空间让新的对象进入,所以报OOM异常

扫描二维码关注公众号,回复: 9317140 查看本文章
发布了126 篇原创文章 · 获赞 6 · 访问量 3741

猜你喜欢

转载自blog.csdn.net/qq_40244391/article/details/103637564