1.堆内存溢出:
1 package com.java.jvm; 2 import java.util.ArrayList; 3 import java.util.List; 4 /**JVM内存大小配置: 5 * 最大堆内存:-Xmx5m 6 * 最小堆内存:-Xms5m 7 */ 8 //java.lang.OutOfMemoryError: Java heap space 9 public class TestMemory01 { 10 public static void main(String[] args) { 11 List<byte[]> list=new ArrayList<>(); 12 for(int i=0;i<1000;i++) { 13 System.out.println(1); 14 list.add(new byte[1024*1024]); 15 } 16 } 17 }
2.栈内存溢出:
1 package com.java.jvm; 2 //java.lang.StackOverflowError (栈内存溢出) 3 public class TestMemory02 { 4 static void doMethod01() { 5 doMethod01(); 6 } 7 public static void main(String[] args) { 8 doMethod01(); 9 } 10 }
3.栈中的栈帧(方法)查看
1 package com.java.jvm; 2 3 public class TestMethodStack01 {//栈中查看栈帧(方法) 4 5 static void doMethod02() { 6 Thread thread=Thread.currentThread(); 7 //获取当前线程中的栈中元素 8 StackTraceElement[] array=thread.getStackTrace(); 9 for(StackTraceElement st:array) { 10 System.out.println(st.getMethodName()); 11 } 12 } 13 static void doMethod01() { 14 doMethod02(); 15 } 16 public static void main(String[] args) { 17 doMethod01(); 18 } 19 }
浙公网安备 33010602011771号