1

您好我正面临以下错误。我通过谷歌搜索读到的是我的本机内存用完了。解决此问题的任何帮助将不胜感激。请注意,我使用的是 32 位 Windows 7。

java.lang.OutOfMemoryError: unable to create new native thread
        at java.lang.Thread.start0(Native Method)
        at java.lang.Thread.start(Thread.java:597)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.start(JIoEndpoint.java:478)
4

3 回答 3

2

您的线程用完了,这与可用内存没有直接关系。

在给定平台(通常由操作系统给定)上,您可以在 Java 中创建的线程数有一个上限。

我的猜测是该消息会在一段时间后显示,并且您的 servlet 没有正确完成。

于 2013-03-25T06:44:39.653 回答
0

因此,如果您的内存不足限制了线程数,那么您可以使用以下 JVM 选项调整与每个线程关联的堆栈空间。

-XX:ThreadStackSize=128k

默认堆栈大小为 512k 或 1024k(我认为),具体取决于您运行的是 32 位还是 64 位 JVM。

如果你的线程数用完了,那么你可能需要创建ExecutorService线程池或其他机制来在更少的线程上运行许多作业。

这是获取更多信息的好链接: 您可以创建的线程数有什么限制?

于 2013-03-25T11:38:23.603 回答
0

http://docs.oracle.com/javase/1.3/docs/tooldocs/solaris/java.html

查看 java -Xmx 选项;您可能需要增加堆大小。

于 2013-03-25T06:09:44.980 回答