【问题标题】:StackOverflowError in Eclipse while running Java code运行 Java 代码时 Eclipse 中的 StackOverflowError
【发布时间】:2012-01-06 08:27:53
【问题描述】:

最近我遇到了一些内存问题,这几天我一直在尝试解决粘贴,但不幸的是没有任何运气!

我正在运行 Mac OS X 10.6.8 / 8GB RAM(应该没有任何分配问题!)

Eclipse 版本是 Helios。

java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-10M3527)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)

我的 Java 异常:

Exception in thread "main" java.lang.StackOverflowError

还有我的 eclipse.ini:

-startup
../../../plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.0.v20100503
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
1G
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-Xms256m
-Xmx512m
-XX:PermSize=1024m
-XX:MaxPermSize=1024M
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts

我还尝试在 Eclipse 中将“-Xmx1536m”添加到我的 VM 参数中,但一点运气都没有!

提前致谢。

【问题讨论】:

  • 如果您可以发布错误的堆栈跟踪会很有帮助。这将给出一个关于有问题的方法的想法。您在代码中使用任何递归吗?如果是这样,请注意您的基本情况。
  • 这是本网站的典型问题! ;-)
  • 我将再次调试并注意(可能)代码中缺少的基本情况。

标签: java eclipse macos memory stack-overflow


【解决方案1】:

当您进行无限递归调用时,StackOverflowError 是一个常见错误,例如:

void method(int a) {
    method(a);
}

这种调用会导致 StackOverflowError。

因此,如果您有这种类型的无限递归调用或无限循环,您应该检查您的代码。

【讨论】:

  • 我将再次单步执行我的代码。我的代码毫无例外地在我的辅助机器上编译似乎是一个奇怪的巧合。而且我确实在使用递归。
  • @JavaCake 发布您的代码,我们可以帮助您识别无休止的递归调用。
【解决方案2】:

在 Eclipse 中 右键单击项目按照以下步骤操作:

  • 运行
  • 运行配置
  • 点击 JRE 选项卡
  • 在 VM 参数部分写下面的参数 -Xss2g

默认堆栈内存大小为 512 KB。我们可以根据需要增加。

  • 点击应用并运行项目..

如果有任何疑问,请在评论部分恢复评论。

【讨论】:

    猜你喜欢
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多