解决:
1.升级JVM到最新的版本 最新版本的JVM一般在内存优化方面做的更好,升级JVM到最新的版本可能会缓解测问题2.从操作系统层面去解决 使用64位操作系统 如果使用32位操作系统遇到unable to create new native thread,建议使用64位操作系统3.增大OS对线程的限制 如果使用Red Hat Enterprise Linux 6,编辑/etc/security/limits.d/90-nproc.conf,添加如下配置:# /etc/security/limits.d/90-nproc.conf
* soft nproc 1024 root soft nproc unlimited user - nproc 2048
测试程序:import java.util.concurrent.CountDownLatch;public class TestNativeOutOfMemoryError { public static void main(String[] args) { for (int i = 0;; i++) { System.out.println("i = " + i); new Thread(new HoldThread()).start(); } }}class HoldThread extends Thread { CountDownLatch cdl = new CountDownLatch(1); public HoldThread() { this.setDaemon(true); } public void run() { try { cdl.await(); } catch (InterruptedException e) { } }}不指定任何JVM参数,eclipse中直接运行输出,看到了这位朋友了吧:i = 5602Exception in thread "main" 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 TestNativeOutOfMemoryError.main(TestNativeOutOfMemoryError.java:20)