星空网 > 软件开发 > Java

Java stackoverflow error

本文想记录一下尝试产生stackoverflow的程序

1 -Xss=1k, 设置stack大小1024个字节,产生515个long,想把stack撑爆。

2 嵌套调用

3 创建大量线程

1 -Xss=1k, 设置stack大小1024个字节,产生515个long,想把stack撑爆。

结论:不可能

1 Java里面的stack是动态扩展的,不是固定设死的。因此无法实施

2 Java的对象都是引用,不会在栈上分配空间。这个从C++过来的人,一定要注意。

3 在有些操作系统上,分配的stacksize是固定的,容易撑爆stack。

 1 public class MyMain {   2  3   public static void main(String[] args) { 4      5     System.out.println("stack overflow"); 6      7     //MyMain main;  这个是变量声明,不分配内存空间。 8     //long aa[] = {0,0,0,0,00,0,0,0,0,0,0,00,0,0}; 注意这个虽然是基本变量的数组,但是也是在heap  9     //String str = "hello world"; 这个是在方法区/常量区分配 10      11     long a0 = 0; 12     long a1 = 0; 13     long a2 = 0; 14     ......525   
15 long a514 = 0;526 527 }528 529 }

 2 嵌套调用

结论:可以撑爆stack

函数的嵌套调用是有深度的,如果结束条件设置不恰当,那么很容易stack overflow

public class MyMain {    private static void foo(){    foo();  }    public static void main(String[] args) {          System.out.println("stack overflow");        foo();      }}

 

3 创建大量线程

结论:在我的机器上,没有观察到.

设置-Xss=100M,只看到内存100M的速度增加,但是增加到7.9G多的时候就不动了,没有发生OutOfMemoryError。这个原因目前还不清楚。

在书《深入理解java虚拟机》中提到可以观察到OutOfMemoryError。

public class MyMain {    public static void main(String[] args) {    // TODO Auto-generated method stub        System.out.println("stack overflow");              while(true){                  Thread th = new Thread(new Runnable(){        @Override        public void run() {                    while(true){            System.out.println("do not stop");          }        }              });      th.start();          }          }}

 




原标题:Java stackoverflow error

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

bartonperreira:https://www.goluckyvip.com/tag/16334.html
BASE:https://www.goluckyvip.com/tag/16335.html
BaseLinker:https://www.goluckyvip.com/tag/16336.html
Baseus:https://www.goluckyvip.com/tag/16337.html
baseusworld:https://www.goluckyvip.com/tag/16338.html
Baskin Robbin:https://www.goluckyvip.com/tag/16339.html
如何用摄影作品表现“芳草鲜美,落英缤纷”的:https://www.vstour.cn/a/411247.html
70岁以上景区门票优惠70周岁还是虚岁?:https://www.vstour.cn/a/411248.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流