OOM(内存溢出异常)实例演示

除了PC(程序计数器)Java虚拟机的其他几个运行时区域均可能出现 OOM异常。


OOM(内存溢出异常)实例演示_第1张图片


Java堆溢出:

OOM(内存溢出异常)实例演示_第2张图片



package day0413;

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

/**
 * VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
 * @author 多多
 *
 */
public class HeapOOM {
	static class OOMObject{
	}
	
	public static void main(String [] args) {
		List list=new ArrayList();
		while(true) {
			list.add(new OOMObject());
		}
	}

}
OOM(内存溢出异常)实例演示_第3张图片



OOM(内存溢出异常)实例演示_第4张图片


虚拟机栈和本地方法栈溢出:

OOM(内存溢出异常)实例演示_第5张图片


实验:

OOM(内存溢出异常)实例演示_第6张图片


package day0413;
/**
 * VM Args: -Xss128k
 * @author 多多
 *
 */
public class JavaVMStackSOF {
	private int stackLength=1;
	public void stackLeak() {
		stackLength++;
		stackLeak();
	}
	public static void main(String [] args)  throws Throwable{
		JavaVMStackSOF oom=new JavaVMStackSOF();
		try {
			oom.stackLeak();
		}catch (Throwable e) {
			System.out.println("stack length:"+ oom.stackLength);
			throw e;
		}
	}
}

OOM(内存溢出异常)实例演示_第7张图片



OOM(内存溢出异常)实例演示_第8张图片




package day0413;
/**
 * VM Args: -Xss2M
 * @author 多多
 *
 */
public class JavaVMStackOOM {
	private void dontStop() {
		while(true) {
		}
	}
	
	public void stackLeakByThread() {
		while(true) {
			Thread thread=new Thread(new Runnable() {
				public void run() {
					dontStop();
				}
			});
			thread.start();
		}
	}
	
	public static void main(String [] args) throws Throwable{
		JavaVMStackOOM oom=new JavaVMStackOOM();
		oom.stackLeakByThread();
	}
}



方法区和运行时常量池溢出:

OOM(内存溢出异常)实例演示_第9张图片


package day0413;

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

/**
 * VM Args: -XX:PermSize-10M -XX:MaxPermSize-10M
 * @author 多多
 *
 */
public class RuntimeConstantPoolOOM {
	public static void main(String [] args) {
		List list=new ArrayList ();
		int i=0;
		while(true) {
			list.add(String.valueOf(i++).intern());
		}
	}

}

OOM(内存溢出异常)实例演示_第10张图片




OOM(内存溢出异常)实例演示_第11张图片


OOM(内存溢出异常)实例演示_第12张图片



本地直接内存溢出:

OOM(内存溢出异常)实例演示_第13张图片


OOM(内存溢出异常)实例演示_第14张图片


OOM(内存溢出异常)实例演示_第15张图片

你可能感兴趣的:(JVM)