原生线程会在堆以外的内存创建,因此受到本地物理内存的限制不能创建更多线程

    1. package online.javabook.jvm.garbage.thread.thread.oome;
    2. /**
    3. * https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
    4. *
    5. * Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
    6. * at java.lang.Thread.start0(Native Method)
    7. * at java.lang.Thread.start(Thread.java:717)
    8. * at online.javabook.jvm.garbage.thread.thread.oome.JvmOutOfMemoryErrorOfThreadDemo.main(JvmOutOfMemoryErrorOfThreadDemo.java:39)
    9. *
    10. * 原生线程会在堆以外的内存创建,因此受到本地物理内存的限制不能创建更多线程
    11. *
    12. * @author Summer Lu
    13. * @email gmluyang@gmail.com
    14. * @date 2014-8-22
    15. *
    16. */
    17. public class JvmOutOfMemoryErrorOfThreadDemo {
    18. /**
    19. * @param args
    20. * @throws InterruptedException
    21. */
    22. public static void main(String[] args) throws InterruptedException {
    23. //Thread.sleep(30000);
    24. int count = 1;
    25. while(count>0){
    26. Thread thread = new Thread(count+""){
    27. public void run() {
    28. try {
    29. System.out.println(Thread.currentThread());
    30. Thread.sleep(1000*3600*24);
    31. } catch (Exception e) {
    32. e.printStackTrace();
    33. }
    34. };
    35. };
    36. thread.start();
    37. count++;
    38. }
    39. }
    40. }
    1. Exception in thread "main" java.lang.OutOfMemoryError: unable to create new native thread
    2. at java.lang.Thread.start0(Native Method)
    3. at java.lang.Thread.start(Thread.java:717)
    4. at online.javabook.jvm.garbage.thread.thread.oome.JvmOutOfMemoryErrorOfThreadDemo.main(JvmOutOfMemoryErrorOfThreadDemo.java:39)