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 }