http://blog.csdn.net/xlgen157...
看到有说:如果虚拟机栈可以动态扩展(大部分虚拟机允许动态扩展,也可以设置固定大小的虚拟机栈)
这个动态扩展是个什么概念?jvm中如何设置?
http://blog.csdn.net/xlgen157...
看到有说:如果虚拟机栈可以动态扩展(大部分虚拟机允许动态扩展,也可以设置固定大小的虚拟机栈)
这个动态扩展是个什么概念?jvm中如何设置?
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
函数调用需要使用栈,如果函数调用链很深(递归的时候很常见),栈的空间不够就会出StackOverflow。
动态扩展就是在栈空间不够的时候,自动加大栈的空间,避免StackOverflow,JVM是没有实现这个功能的。
动态栈通常有两种方法:Segmented stack和Stack copying。
Segmented stack可以简单理解成一个双向链表把多个栈连接起来,一开始只分配一个栈,这个栈的空间不够时,就再分配一个,用链表一个一个连起来。
Stack copying就是在栈不够的时候,分配一个更大的栈,然后把原来的栈复制过去。