java棧的最大深度?
阿新 • • 發佈:2018-12-12
今天想到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
還有,就是當前物件中包含的變數資料越大,相比較其一個物件(棧幀)越大的話,深度越淺,這個程式碼就不發了,直接在物件中加幾個大點的變數就行