输出异常结果:
- Exception in thread "main" java.lang.StackOverflowError
- stack length:9482
- at com.itech.jvm.demo.StackOverflowErrorDemo.printStackOverflowError(StackOverflowErrorDemo.java:22)
- at com.itech.jvm.demo.StackOverflowErrorDemo.printStackOverflowError(StackOverflowErrorDemo.java:22)
- at com.itech.jvm.demo.StackOverflowErrorDemo.printStackOverflowError(StackOverflowErrorDemo.java:22)
- at com.itech.jvm.demo.StackOverflowErrorDemo.printStackOverflowError(StackOverflowErrorDemo.java:22)
- at com.itech.jvm.demo.StackOverflowErrorDemo.printStackOverflowError(StackOverflowErrorDemo.java:22)
- at com.itech.jvm.demo.StackOverflowErrorDemo.printStackOverflowError(StackOverflowErrorDemo.java:22)
- at com.itech.jvm.demo.StackOverflowErrorDemo.printStackOverflowError(StackOverflowErrorDemo.java:22)
- at com.itech.jvm.demo.StackOverflowErrorDemo.printStackOverflowError(StackOverflowErrorDemo.java:22)
- at com.itech.jvm.demo.StackOverflowErrorDemo.printStackOverflowError(StackOverflowErrorDemo.java:22)
需要说明的是,在单个线程环境下,无论是栈帧太大,还是虚拟机栈容量太小,当内存无法分配时,虚拟机都会抛出 StackOverflowError 异常。
2.3.3.2 一种是OOM异常
当虚拟机栈支持动态扩展时,如果无法申请到足够多的内存时就会抛出OOM异常。代码清单如下:
- public class VMOOMDemo {
- public static void main(String[] args) throws Throwable {
- VMOOMDemo demo = new VMOOMDemo();
- demo.printVMOOM();
- }
- public void printVMOOM() {
- while (true) {
- new Thread() {
- public void run() {
- while (true) {
- }
- }
- }.start();
- }
- }
- }
这个例子慎用... (编辑:西安站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|