java - 堆栈帧大小是否有上限

标签 java jvm out-of-memory heap-memory stack-memory

我们有一个堆内存不足的错误,但是(只是出于好奇而问)是否对单个堆栈的大小有等效的限制?如果不是,那么如果堆栈帧需要多余的内存(如数千个局部变量等),那么如何防止这种溢出?

最佳答案

如果线程请求的堆栈空间多于可用的堆栈空间,它会收到 StackOverflowError。

http://docs.oracle.com/javase/7/docs/api/java/lang/StackOverflowError.html

单个堆栈帧的大小在编译时确定,并与方法代码一起存储在类文件中。实际上有两个字段:局部变量数组的大小和操作数栈的深度。两者都限于 2^16-1。 http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html#1546

关于java - 堆栈帧大小是否有上限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19582194/

相关文章:

java.util.MissingResourceException : Can't find resource for bundle

java - 如何将字符串从 Android 发送到 PHP?我的 PHP 脚本应该如何处理它?

java - 如何在多个核心上执行java程序?

java - 堆大小迅速增加 spring boot 应用程序

java - 如何仅使用 websockets 将 java 客户端连接到 SignalR Hub?

来自下载链接的 Javafx 图像

java - 运行 jmap 无法打开套接字文件

Ant 与 JUnit 任务 - OutOfMemoryError

tomcat - PermGen 问题 - Groovy GString 实习生字符串吗?

java - 内存不足错误 : Java heap space - Using big array size