Java线程创建相关的几个小知识点问题

请问下面的这段代码:
[code]
public static void main(String[] args) throws Exception{

for(int i=0;i<20000;i++){

new Thread(new Runnable(){

public void run(){

try{

Thread.sleep(100000);

}

catch(Exception e){

// ignore

}

}

}).start();

}

}
[/code]
假设OS环境为Linux,JDK为Oracle JDK5/6/7,并采用此参数执行时:-Xss1m此Java进程占用的VIRT和RES分别会是多少,原因是?

另外,在执行此段代码时,可能会出现java.lang.OutOfMemoryError: unable to create new native thread,请问如出现此异常,可能是什么原因造成的?

如将上面的i<20000改为i<40000,再执行时(慎重执行此操作),同样可能会出现java.lang.OutOfMemoryError: unable to create new native thread,并且此时在shell中执行ls等操作时,可能会出现Resource temporarily unavailable,可能是什么原因造成的?

明天将来发文对上面的问题进行回答。

《Java线程创建相关的几个小知识点问题》有5个想法

  1. 一个线程占用1m的空间,一直循环下去将会导致内存空间不足,进而占用swap区域,因此报第一个错

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*