如何增加 Java 堆栈大小并避免 StackOverflowError?
如何增加 Java 堆栈大小(Xss 参数)
要增加 JVM 中运行时堆栈的容量,请使用 '-Xss ' 具有适当值的命令行标志。对于 'TT' 程序 (1
$ javac TT.java $ java -Xss4m TT
'-X...' 标志的实现依赖
请注意,“-X...”标志是特定于实现的。在提供的 Java 版本中,“-Xss”标志控制所有线程的堆栈大小。
线程特定的堆栈分配
或者,您可以分配一个慷慨的堆栈大小。使用 java.lang.Thread.stackSize() 方法指定特定线程的堆栈大小。这种方法是有利的,因为它可以防止具有适度堆栈要求的线程的内存浪费。
确定堆栈要求
要衡量程序所需的堆栈大小,请迭代运行它随着堆栈大小的增加,直到它成功执行且没有“StackOverflowError”。对于“TT”程序,堆栈大小确定如下:
-Xss4m: suffices for (1 << 15) -Xss5m: suffices for (1 << 17) ... -Xss515m: suffices for (1 << 25)
非确定性堆栈要求现象
由于以下因素,堆栈要求可能会表现出不确定性行为垃圾收集和 JIT 执行计时。要精确计算达到的堆栈深度,请参阅下面的答案(使用 Javassist)。
替代实现
考虑堆栈消耗更少的替代算法。对于“fact”函数,可以利用迭代实现来避免递归并减少堆栈使用:
public class TTIterative { // ... implementation ... }
BigInteger 注意事项
“fact”函数不能由于溢出,使用“long”数据类型计算大于 65 的数字的精确阶乘。重构函数以返回“BigInteger”可以解决此问题,并为较大的输入提供准确的结果。
以上是如何增加 Java 堆栈大小并避免 StackOverflowError?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

公司安全软件导致部分应用无法正常运行的排查与解决方法许多公司为了保障内部网络安全,会部署安全软件。...

系统对接中的字段映射处理在进行系统对接时,常常会遇到一个棘手的问题:如何将A系统的接口字段有效地映�...

在使用MyBatis-Plus或其他ORM框架进行数据库操作时,经常需要根据实体类的属性名构造查询条件。如果每次都手动...

将姓名转换为数字以实现排序的解决方案在许多应用场景中,用户可能需要在群组中进行排序,尤其是在一个用...

在使用IntelliJIDEAUltimate版本启动Spring...

Java对象与数组的转换:深入探讨强制类型转换的风险与正确方法很多Java初学者会遇到将一个对象转换成数组的�...

电商平台SKU和SPU表设计详解本文将探讨电商平台中SKU和SPU的数据库设计问题,特别是如何处理用户自定义销售属...

在使用TKMyBatis进行数据库查询时,如何优雅地获取实体类变量名以构建查询条件,是一个常见的难题。本文将针...
