我正在模拟服务器的重载,我收到此错误:
java.lang.OutOfMemoryError: unable to create new native thread
我在这个页面http://activemq.apache.org/javalangoutofmemory.html中读过,我可以增加内存大小.但是我该怎么做?我需要修改哪个文件?我试图通过bin/activemq脚本传递参数,但没有运气.
您的案例对应于大量的线程.有3种方法可以解决它:
减少线程数(即文档中的-Dorg.apache.activemq.UseDedicatedTaskRunner = false)
通过-Xss选项减少每线程堆栈大小(默认值:Win/Linux上32位Java为320 KiB,Win/Linux上为64位Java为1024 KiB,请参阅doc)
减少(不扩展)堆大小-Xmx选项为每个线程堆栈腾出空间(默认情况下在ActiveMQ脚本中为512 MiB)
注意:如果堆栈或堆太小,则必须导致另一个OutOfMemoryError.
您可以使用ACTIVEMQ_OPTS shell变量指定它们(在UNIX中).例如,运行ActiveMQ as
ACTIVEMQ_OPTS=-Xss160k bin/activemq