在 Java 中获取可用剩余堆栈内存的最佳方法?

Nav*_*eur 5 java stack

在递归调用期间,获取或计算 Java 中可用的剩余堆栈内存的最佳方法是什么?

(我试图对深度递归调用进行分段,以尽可能多地使用堆栈(为了速度性能),但不会遇到堆栈溢出。

我已经完成了一个“堆”版本,它带来了速度性能开销,这就是我进行此优化的原因。)

NPE*_*NPE 1

没有办法以便携的方式做到这一点。

这不仅是特定于操作系统的,实际上堆栈的最大大小受到多种限制(ulimit -c可用虚拟内存量-Xss-XX:ThreadStackSize设置等)。这使得很难知道哪个约束将首先受到影响,即使您可以可靠地测量到目前为止消耗了多少堆栈空间。