-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJavaVMSOF.java
More file actions
40 lines (33 loc) · 1.01 KB
/
JavaVMSOF.java
File metadata and controls
40 lines (33 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package gc;
import javax.print.attribute.standard.MediaName;
/*
* 模拟jvm 虚拟区栈 和 本地方法栈出现的异常
* HotSpot虚拟机中并不区分虚拟机栈和本地方法栈,只能由-Xss设置栈的大小
*
* 两种异常:
* StackOverflowError:栈大小不够
* OutOfMemoryError:内存大小不够
*
* 次类只能演示StackOverflowError的异常
* 1.使用-Xss减小栈内存的容量 :-Xss128k
* 2.定义大量的本地变量,以此增大虚拟机栈中“本地变量表”的长度
*
* 实验结果表明:
* 在单线程环境下,无论是栈帧太大,还是虚拟机栈的容量太小,抛出的都是StackOverflowError
* */
public class JavaVMSOF {
private int stackLength=1;
public void stackLeak(){
stackLength++;
stackLeak();
}
public static void main(String[] args) throws Throwable{
JavaVMSOF jvs=new JavaVMSOF();
try{
jvs.stackLeak();
}catch(Throwable t){
System.out.println("stack length:"+jvs.stackLength);
throw t;
}
}
}