1. 程式人生 > >java棧的最大深度?

java棧的最大深度?

今天想到java的儲存資料的地方(棧,堆)

然後就特地寫了段程式碼(這裡堆沒去考慮,主要堆分為新生代,老年代,其中GC會去回收老年代的資料的)

public class Stack {
    public void init(int i){
        try {
            init(++i);
        }catch (Throwable e){
            System.out.println("stack_length:"+i);
        }
    }

    public static void main(String[] args) {
        new Stack().init(0);
    }
}

out

java.lang.StackOverflowError
stack_length:9475

然後使用jvm調優

java -Xss2m  Stack
java -Xss4m  Stack
java -Xss8m  Stack


分別輸出:
stack_length:84413
stack_length:169795
stack_length:256941

還有,就是當前物件中包含的變數資料越大,相比較其一個物件(棧幀)越大的話,深度越淺,這個程式碼就不發了,直接在物件中加幾個大點的變數就行