我没有权限访问jvm设置,因为我正在提交要在别处运行的代码,所以我不能按照其他堆栈溢出的答案来扩展堆栈大小。有什么方法可以从我的java文件中完成吗?
我想这样做的原因(不是很重要):
我在一个有10^5个节点的树上使用递归。一般情况下是可以的,但不能保证树的形状。我正在处理一个边缘的情况下,树只是一条长长的线。我得到了一个stackOverflower错误,但是如果我能扩展我的堆栈大小,我的算法就会运行得很好。我想通过找到树的质心或使用稀疏矩阵来处理这种情况,但我更愿意将堆栈大小增加一倍并使用现有代码。
1条答案
按热度按时间dl5txlt91#
总结一下这些评论,你可以创建一个新的线程并指定一个栈的大小,尽管文档说这些效果高度依赖于平台(至少在我的电脑上是有效的)。更多信息请参见:https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/thread.html#%3cinit%3e(java.lang.threadgroup、java.lang.runnable、java.lang.string、long)
例子:
(更改stacksize,您将看到更高的递归深度)