如何推迟 IntelliJ IDEA 的 stackoverflowError?

How to postpone stackoverflowError IntelliJ IDEA?

我找到了一个无需增加任何内存大小的解决方案,

var count = 0

fun main(args: Array<String>) {
    repeater()
}
fun repeater(){
    a()
    repeater()
}
fun a(){
    if(count%2000==0 && count !=0){
        count++
        return
    }
    count++
    println(count)
}

出于某种原因,这确实有效。 使用简单的 println() 对其进行测试,它从 1100 上升到超过 400k。 我最近才开始编程,我不太明白这一点,还在我的程序中测试它,其中 2 个机器人互相比赛,它确实将他们可以玩的比赛从 400 场增加到大约 4000-5000 场。 (我不得不玩不同的 调制器(?)找到最佳 ) 我还使用多个中继器和调制器-ifs 进行了测试,但我找不到任何规则,有一些更好,有一些甚至更糟。

//这是原题:

我希望稍后抛出错误,所以如果它是在 1000 次递归调用之后抛出的,我希望它在 2000 次或更多次之后抛出。 增加堆内存或内存不会改变它。总是在 11000 左右打电话给我。

var count = 0   
fun a(){  count++  println(count)  a() }

使用 -Xss JVM 参数增加线程堆栈大小。

来自documentation

-Xsssize

Sets the thread stack size (in bytes). Append the letter k or K to indicate KB, m or M to indicate MB, g or G to indicate GB. The default value depends on the platform:

  • Linux/ARM (32-bit): 320 KB

  • Linux/i386 (32-bit): 320 KB

  • Linux/x64 (64-bit): 1024 KB

  • OS X (64-bit): 1024 KB

  • Oracle Solaris/i386 (32-bit): 320 KB

  • Oracle Solaris/x64 (64-bit): 1024 KB

The following examples set the thread stack size to 1024 KB in different units:

-Xss1m
-Xss1024k
-Xss1048576

This option is equivalent to -XX:ThreadStackSize.