2017-01-25 116 views
0

目前,當在Jboss AS(Jboss 6.2)中部署應用程序時,我面臨着下面的異常。Jboss應用程序安裝錯誤

[Server:server-one] 20:23:35,791 ERROR [stderr] (Periodic Recovery) Exception in thread "Periodic Recovery" java.lang.StackOverflowError [Server:server-one] 
[Server:server-one] 20:23:35,791 ERROR [stderr] (Periodic Recovery)  at java.io.FilePermission$1.run(FilePermission.java:183) [Server:server-one] 
[Server:server-one] 20:23:35,791 ERROR [stderr] (Periodic Recovery)  at java.security.AccessController.doPrivileged(Native Method) [Server:server-one] 
[Server:server-one] 20:23:35,791 ERROR [stderr] (Periodic Recovery)  at java.io.FilePermission.init(FilePermission.java:183) [Server:server-one] 
[Server:server-one] 20:23:35,791 ERROR [stderr] (Periodic Recovery)  at java.io.FilePermission.<init>(FilePermission.java:249) [Server:server-one] 
[Server:server-one] 20:23:35,791 ERROR [stderr] (Periodic Recovery)  at sun.net.www.protocol.file.FileURLConnection.getPermission(FileURLConnection.java:200) 

有誰遇到過這樣的問題?

由於提前

+0

當您定義遞歸方法並遞歸調用此方法時,可能會拋出「StackOverflowError」錯誤。這意味着方法調用它自己。一旦我們調用方法,遞歸結束,傳遞0作爲參數。在你的情況下,遞歸不會終止。根據JVM的初始配置,結果可能會有所不同,但最終會拋出StackOverflowError。 –

+0

最簡單的解決方案是仔細檢查堆棧軌跡並檢測行號的重複模式。這些行號表示遞歸調用的代碼。一旦你檢測到這些行,你必須仔細檢查你的代碼,並理解爲什麼遞歸永遠不會終止。 –

+0

如果您已驗證遞歸正確實施,則可以增加堆棧的大小,以便允許大量的調用。根據安裝的Java虛擬機(JVM),默認線程堆棧大小可能等於512KB或1MB。您可以使用-Xss標誌增加線程堆棧大小。該標誌可以通過項目的配置或通過命令行指定。 -Xss參數的格式是: -Xss [g | G | m | M | k | K] –

回答

0

根源:

堆棧空間由程序所需要的量超過(大於JVM分配的大小)的原因如下:

  • 該程序和/或用例需要更大的堆棧(例如,圖形密集型程序)。

  • 該應用程序是深嵌套(遞歸)。

  • 無限循環

由64K增量增加線程堆棧大小,直到消失的StackOverflowError。或者,修改代碼或配置以避免遞歸或無限循環。