在jboss的run.bat中设置JAVA_OPTS

时间:2012-01-16 12:47:05

标签: java jboss

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

这个参数适用于jboss的run.bat,但是我想增加堆栈大小 -Xss512m 但它不起作用。

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

它有什么问题?

2 个答案:

答案 0 :(得分:2)

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

为什么首先增加堆栈大小?对于大多数用途,默认堆栈大小应该没问题。如果它不够大,那么很有可能:

  • 您的程序中有一个错误导致无限递归(并且增加堆栈大小无效)或...

  • 您正在使用具有病态案例的算法(并且增加堆栈大小是一个绑定)。


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

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

答案 1 :(得分:0)

VM中的每个线程都是一个堆栈。堆栈大小将限制您可以拥有的线程数,太大的堆栈大小,并且您将耗尽内存,因为每个线程分配的内存超过了所需的内存。 source

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