2012-01-06 62 views
2

最近我遇到了一些內存問題,我一直在嘗試解決粘貼幾天,但不幸的是沒有任何運氣!在運行Java代碼的Eclipse中的StackOverflowError

我運行Mac OS X 10.6.8/8GB的內存(應該是沒有任何分配問題!)

Eclipse版本是太陽神。

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 

我也嘗試添加 「-Xmx1536m」 我VM參數Eclipse中,但沒有任何運氣!

在此先感謝。

+3

如果您可以發佈錯誤的堆棧跟蹤將會很有幫助。這會給出有關有問題的方法的想法。你在代碼中使用任何遞歸嗎?如果是這樣,注意你的基本情況。 – slhsen 2012-01-06 08:43:39

+0

這是本網站的典型問題! ;-) – 2012-01-06 08:45:13

+0

我將再次調試並注意(可能)代碼中缺少基本情況。 – JavaCake 2012-01-06 09:10:38

回答

1

的StackOverflowError是一個常見的錯誤,當你有一個無限遞歸調用,如:

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

這種電話會導致的StackOverflowError。

所以你應該檢查你的代碼,如果你有這種類型的無限遞歸調用或可能是一個無限循環。

+0

我會再一次瀏覽我的代碼。這似乎是一個奇怪的巧合,我的代碼編譯在我的輔助機器上,沒有任何例外。我的確在使用遞歸。 – JavaCake 2012-01-06 09:08:17

+0

@JavaCake發佈你的代碼,我們可以幫助你識別無限的遞歸調用。 – 2012-01-06 09:12:23

0

在Eclipse 右鍵單擊項目按照以下步驟進行:

  • 運行
  • 運行配置
  • 點擊JRE選項卡上
  • 在VM參數部分下面寫參數 -Xss 2克

默認堆棧內存大小爲512 KB。我們可以根據我們的需要增加。

  • 點擊應用和運行項目..

如果萬一有任何疑問,恢復在評論部分評論。