解決java.lang.OutOfMemoryError: unable to create new native thread問題


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM