2012-01-16 37 views
1
set JAVA_OPTS=-Xms256m -Xmx512m -Djava.awt.headless=true -XX:MaxPermSize=256m -server 

这种说法在工作的JBoss的run.bat但我想增加堆栈大小我已经添加 -Xss512m 但它不工作的run.bat中。集JAVA_OPTS在JBoss中

set JAVA_OPTS=-Xms256m -Xss512m -Xmx512m -Djava.awt.headless=true -XX:MaxPermSize=256m -server 

它有什么问题吗?

+0

“它不工作” - 基于你说什么? – adarshr 2012-01-16 12:48:41

+3

圣牛Xss512m!那么Xss512k呢?或Xss2048k。这是为每个线程分配的堆栈大小! – aayoubi 2012-01-16 12:50:50

回答

2

-Xss512m选项将每个线程堆栈的大小增加为到512 MB。太疯狂了。我期望这是导致 JBoss内存不足。

为什么要首先增加堆栈大小?大多数情况下,默认的堆栈大小应该没问题。如果不是足够大,然后有一个很好的机会,无论是:

  • 你必须在你的程序是导致无限递归(和增加堆栈大小不会帮助)或错误..

  • 您正在使用具有病态情况的算法(并且增加堆栈大小是一个bandaid)。


根据您的意见,我猜您正在使用正则表达式来解析包含多条记录的整个输入文件。正则表达式引擎使用递归来处理重复元素/组。

假设这是问题,那么修复就是重写你的解析代码。

+0

当我尝试在我的系统上批量上传客户时,我正面临着这个错误。对于300位客户,系统工作正常,但是如果我试图上传1000左右的客户,则会抛出异常。如果存在无限循环,那么系统也不适用于300。纠正我,如果我错了。 – chetan 2012-01-16 14:03:48

0

VM中的每个线程都获得堆栈。堆栈大小将限制您可以拥有的线程数量,堆栈大小过大,并且由于每个线程分配的内存比需要的多,因此内存不足。 source

显然-Xss512m太大了。尝试更小的值,要小得多:-Xss2048k