解決:
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 = 5602 Exception 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)