1+ package com .brianway .learning .java .jvm .memory ;
2+
3+ /**
4+ * Created by brian on 17/3/1.
5+ * 虚拟机栈和本地方法栈 OOM 测试
6+ * VM Args: -Xss256k
7+ */
8+ public class JavaVMStackSOF {
9+ private int stackLength = 1 ;
10+
11+ public void stackLeak () {
12+ stackLength ++;
13+ stackLeak ();
14+ }
15+
16+ public static void main (String [] args ) {
17+ JavaVMStackSOF oom = new JavaVMStackSOF ();
18+
19+ try {
20+ oom .stackLeak ();
21+ } catch (Throwable e ) {
22+ System .out .println ("stack length:" + oom .stackLength );
23+ throw e ;
24+ }
25+ }
26+
27+ }
28+
29+ /*
30+ stack length:1862
31+ Exception in thread "main" java.lang.StackOverflowError
32+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:12)
33+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
34+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
35+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
36+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
37+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
38+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
39+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
40+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
41+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
42+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
43+ at com.brianway.learning.java.jvm.memory.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13)
44+
45+ .....
46+
47+
48+
49+ Process finished with exit code 1
50+ */
0 commit comments