1、栈内存大小设置
栈内存为线程私有的空间,每个线程都会创建私有的栈内存。栈空间内存设置过大,创建线程数量较多时会出现栈内存溢出StackOverflowError。同时,栈内存也决定方法调用的深度,栈内存过小则会导致方法调用的深度较小,如递归调用的次数较少。
-Xss:如-Xss128k
通常只有几百K决定了函数调用的深度
每个线程都有独立的栈空间
局部变量、参数 分配在栈上
2、递归调用
-
package com.thread.study;
-
-
public
class Stack {
-
private
static
int count=
0;
-
public static void recursion(long a,long b,long c){
-
long e=
1,f=
2,g=
3,h=
4,i=
5,k=
6,q=
7,x=
8,y=
9,z=
10;
-
count++;
-
recursion(a,b,c);
-
}
-
public static void main(String args[]){
-
try{
-
recursion(
0L,
0L,
0L);
-
}
catch(Throwable e){
-
System.out.println(
"deep of calling = "+count);
-
e.printStackTrace();
-
}
-
}
-
-
}
-Xss128k:deep of calling = 306
-Xss256k:deep of calling = 761