java栈深度
来源:互联网 发布:思科网络认证 编辑:程序博客网 时间:2024/06/04 04:25
什么是java栈深度?
java栈深度有什么用?
我们知道java栈是java虚拟机的一个重要的组成部分,在栈里进行线程操作,存放方法参数等等。
栈在初始化过后是有一定的大小的。
public class Test{
private int count = 0;
public void testAdd(){
count ++;
testAdd();
}
public void test(){
try{
testAdd();
}catch(Throwable e){
System.out.println(e);
System.out.println("栈深度:"+count);
}
}
public static void main(String [] args){
new Test().test();
}
}
运行程序,可以看到栈深度:
栈深度:11114
栈的高度称为栈的深度,栈深度受栈帧大小影响。
我们知道,在栈中存放局部变量,参数,运行中间结果等。
通过-Xss可以设置栈的大小:
。
----------改变传入参数--增加传入参数,观察栈深度变化。
public void testAdd(int a,int b,int c){
count ++;
testAdd(a,b,c);
}
运行程序:
结果-栈深度:6632
----------增加局部变量:
public void testAdd(int a,int b,int c){
int d=0;
long h=9l;
count ++;
testAdd(a,b,c);
}
结果-栈深度-5928.
由此可以看出,局部变量表内容越多,栈帧越大,栈深度越小。
知道了栈深度,该怎么用呢?对JVM调优有什么用呢?
当JVM我们定义的方法参数和局部变量过多,字节过大,考虑到可能会导致栈深度多小,可能使程序出现错误。
这个时候就需要手动的增加栈的深度,避免出错。
而且当看到StackOverFlow的时候我们也可以知道可能是栈溢出造成的错误。知道如果去解决。这才是最重要的。
- java栈深度
- 深度剖析Java变量栈&对象堆
- Java深度控制word
- java深度历险读书笔记
- java 深度历险 小记
- 读java深度历险
- Java深度历险
- java深度拷贝
- 看书 《 java 深度历险》
- java深度克隆
- java 深度克隆
- Java 深度历险
- java String 深度解析
- java的深度克隆
- java深度克隆方法
- java深度复制
- 深度解析 java HelloWorld
- 深度剖析JAVA软件工程师
- HDU-1142-A Walk Through the Forest
- hdu1142(dijastra+记忆化搜索)
- Java读取多层级xml文件
- #501 – 在对个控件中共享事件处理程序(Sharing an Event Handler Across Multiple Controls)
- Spring揭秘(五)——BeanFactory的XML之旅
- java栈深度
- hdu1166 敌兵布阵(线段树单点更新+区间求和)
- STL Deque 容器
- PDO:什么是预处理?
- 快速幂与矩阵快速幂
- Android开发笔记整理
- css Sprties的使用,帮你更好的选择图片
- POI操作Excel常用方法总结
- 通过身边小事解释机器学习是什么?