AIX中的java thead计数限制?

AIX中的java thead计数限制?,java,aix,Java,Aix,通过执行一个简单的循环createthreadjava程序,当我使用-Xmx2048M时,AIX的线程计数限制约为900,当我将该参数减少到-Xmx1024M时,线程计数限制增加到2000左右。我的ulimit属性都是无限的: ulimit-a 时间(秒)不限 文件(块)不受限制 数据(千字节)不受限制 堆栈(千字节)不受限制 内存(千字节)无限 coredump(块)无限 无文件(描述符)限制 线程(每个进程)不受限制 进程(每个用户)不受限制 有人能帮我吗?谢谢我猜您有一个32位JVM,它的

通过执行一个简单的循环createthreadjava程序,当我使用-Xmx2048M时,AIX的线程计数限制约为900,当我将该参数减少到-Xmx1024M时,线程计数限制增加到2000左右。我的ulimit属性都是无限的: ulimit-a 时间(秒)不限 文件(块)不受限制 数据(千字节)不受限制 堆栈(千字节)不受限制 内存(千字节)无限 coredump(块)无限 无文件(描述符)限制 线程(每个进程)不受限制 进程(每个用户)不受限制


有人能帮我吗?谢谢

我猜您有一个32位JVM,它的虚拟内存限制约为2.8GB(在保留操作系统和JVM库之后)。如果每个线程使用大约900 KB,那么使用2GB堆会为大约900个线程留下虚拟内存。如果将堆大小减少到1GB,这将为大约2000个线程留下足够的虚拟内存

尝试使用64位JVM,因为我也猜您有一个64位操作系统(32位操作系统往往有一个下限),或者减少最大堆栈大小

在大多数操作系统上,64位JVM的容量限制在1 TB左右,我发现在遇到一些限制之前,您可以创建大约32K个线程(我还没有弄清楚是什么)


下面是我写的一篇关于Linux主题的文章

减少线程堆栈,进程可能会达到虚拟内存限制。我猜默认的堆栈大小(-Xss)是1MB,我试过使用-Xss32K,但结果和以前一样。你不能使用这么低的堆栈,试试128KB以上的东西谢谢你的回答,我确实使用了32位JVM,但我试过Xss32K或Xss8K,结果总是在900左右……这应该会有所帮助。添加了一个链接到我写的一篇关于这个主题的文章。8k-32k是完全不能接受的低堆栈值。我想它只是反转到默认的1MB