2009-12-17 36 views
0

使用JUnit Ant任務來在CentOS運行從CruiseControl的我的單元測試5.4的JUnit Ant任務會導致「堆棧大小太小」的錯誤

我junit任務叉運行測試,其中大部分工作正常,但是在JVM崩潰的情況下,我總是收到間歇性故障,總是出現相同的錯誤:

[junit]致命:堆棧大小太小。使用'ulimit -s'來增加默認的堆棧大小。

我已經使用ulimit將堆棧大小加倍,並且崩潰繼續發生。 JUnit任務運行大約100個不同的jUnit測試類,並且JVM崩潰可能發生在任何JUnit測試類中,所以我不相信這種行爲是由於任何特定測試造成的。

ulimit -a告訴我,堆棧大小爲32768 kb(爲了達到這個目的,我已經調高了幾次),這對我來說似乎很重要。

運行Sun JDK 1.3

任何人有任何線索,或什麼明智的堆棧大小可能會建議。

從來沒有提到過增加Java堆棧大小(-Xss) - 但我試過了,但結果相同。

戴夫

+1

「跑步太陽jdk 1.3」爲什麼,親愛的上帝,爲什麼?即使JDK 1.5已經達到其EOL!您無法真正期望JVM能夠在未經過多年更新的現代硬件上完美地工作,並在128MB物理內存被大量使用時引入。 – 2009-12-17 16:52:42

+0

這不是通過選擇讓我向你保證 - 事情在企業世界中移動slooooow – DaveH 2009-12-17 18:58:49

回答

3

你加是這樣的:

<jvmarg line="-Xss512k"/> 

在Ant腳本或只是增加堆棧的螞蟻過程本身(假設,當然,你是forkign測試,而不是在虛擬機的ant實例中運行它們)。

+0

「從來沒有提到增加java堆棧大小(-Xss) - 但我試過了,但結果相同。」 – Woot4Moo 2009-12-17 17:24:31

+0

並不意味着它是增加的堆棧產生的vm。運行的堆棧ant不會增加測試在 – TofuBeer 2009-12-17 17:35:09

+0

中運行的虛擬機的堆棧我沒有增加螞蟻進程本身的堆棧大小,我只是增加了其中的junit任務的堆棧大小。這會爲每個測試(在BATCHTEST標記中指定)分配一個新進程,我假設它獲取了我在junit任務中指定的堆棧大小。 – DaveH 2009-12-17 19:17:08

0

我對這件事的想法是,不知怎的,事情並沒有從內部堆棧中彈出,我意識到這是顯而易見的。既然你說它在整個測試過程中任意失敗,追查起來有點困難。這些測試用例中有多少是遞歸的?還有多少叉正在執行?

+0

我不認爲任何測試用例都是(有意)遞歸的,並且基本上相同的巡航控件設置在Windows上完美運行,並且在JDK 1.5和Centos下(都在不同的物理機器上)運行。我注意到的一件事(可能會有一些影響)是,當我在Ubuntu的JDK1.3下運行Eclipse中的測試用例時,它們似乎永遠不會正確完成。如果我在IDE中運行測試計劃,測試全部運行,但JVM從未完成,我必須手動終止它。我猜這兩件事是相關的(通過一分錢沒有下降直到我讀你的評論) – DaveH 2009-12-17 19:20:48

+0

這可能是一個問題:) – Woot4Moo 2009-12-17 19:56:48

相關問題