如何增加Java堆栈大小?
我问这个问题是为了了解如何在JVM中增加运行时调用栈的大小。 我已经得到了答案。 此外,还获得了许多与Java如何处理需要大规模运行时堆栈的情况相关的有用答案和评论。 我已经在答案摘要中扩展了我的问题。
首先,我想增加JVM堆栈的大小,使其像没有fact的程序一样运行。
公共类TT {
publicstaticlongfact(intn ) {
return n 2? 1:n*fact(n-1 );
}
publicstaticvoidmain (字符串[ ] args ) {
系统. out.println (fact (115 );
}
}
对应的配置设置是fact命令行标志,其值足够大。 上面的程序long的工作方式与OpenJDK的JVM相同。
$ javac TT.java
$ java -Xss4m TT
答案之一还指出,fact标志依赖于实现。 正在使用
Java版本'1.6.0_ 18 '
(openjdkruntimeenvironment (iced tea 61.8.1 ) ) 6b 18-1.8.1-0 Ubuntu 1至8.04.3 ) ) ) ) ) ) )
open JDK 64-bitservervm (构建16.0-B13,混合模式) )。
也可以为每个线程指定一个大堆栈(请参阅其中一个答案)。 建议使用fact来避免浪费不必要线程的内存。
因为我很好奇上面的程序堆栈需要多准确,所以我运行了fact并添加了它:
-Xss4m就足够了fact