运行Java代码时Eclipse中的StackOverflowError

时间:2012-01-06 08:27:53

标签: java eclipse macos memory stack-overflow

最近我遇到了一些内存问题,我几天都试图解决这个问题,但遗憾的是没有运气!

我正在运行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中为我的VM参数添加“-Xmx1536m”,但没有任何运气!

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

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

这种调用会导致StackOverflowError。

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

答案 1 :(得分:0)

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

  • 运行
  • 运行配置
  • 点击JRE标签
  • 在VM参数部分中写下以下参数 -Xss的2克

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

  • 点击“申请并运行项目..”

如果有任何查询,请在评论部分中恢复评论。