2017-01-25 114 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。或者,修改代码或配置以避免递归或无限循环。