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异常