在thinking in java 中有这样一句话:
main()创建Thread对象时,它并未捕获任何一个对象的句柄。普通对象对于垃圾收集来说是一种“公平竞赛”,但线程却并非如此。每个线程都会“注册”自己,所以某处实际存在着对它的一个引用。这样一来,垃圾收集器便只好对它“瞠目以对”了。
可是我用了个死循环new 了六七十万个线程,电脑运行如故,我的电脑的内存只有256的啊.

解决方案 »

  1.   

    就是不清楚有没有被回收啊,我觉得是被回收了,可是thinking in java  说是不能被回收的.  我想在这里的大多数人都看过那本书了吧,你们是怎么理解的呢?
      

  2.   

    你应该用控制面板,看看程序占用的内存如何。进程没有结束是不会回收的,这不奇怪,直到你的虚拟内存都用完为止。你的windows就开始有你想要的答案。
      

  3.   

    你的几十万个线程里是不是空的,只是new了个thread。
    在run里加一些操作,确保它们都在运行。thinking in java里还有个程序开个大约100个线程速度就很慢了。
    就是画许多彩色表格的那个例子。
      

  4.   

    《thinking in java》讲的太深奥了,不利于初学者学习,我们可以这样的理解:垃圾回收器的线程是一个最低级别的线程,垃圾回收器线程运行是随机的,它有自己的一套算法,来判断一个对象是否还存在对其的引用,如果一个对象没有对它的引用的话,垃圾回收器就将其回收,至于什么时候去回收我们编程人员不用去考虑,这个由JVM来进行处理