刚刚看到了csdn主页上的一个Java内存泄露的帖子,帖子写的不错,不过似乎不是很完整。这个是内存泄露中的一种,也就是不是真的泄露了,而是没有及时收回,没有出现C中典型的再也找不到的内存的情况。
如是说来,Java还会出现其他的资源泄露,就比如线程的泄露。想起来我以前做过的一个交通仿真的程序,在这个程序中,每一个车辆都是一个单独的线程,从一个随机的地点出现,再到一个随机的目的地之后消失,然后再产生新的车辆。那个时候也是刚刚接触Java,才学了几天,对于线程也不熟悉,于是我就认为把那个线程的对象置null就可以了,Java的GC就会帮我做完其他的事情。但是由于它是线程,我并没有停止线程的运行,它实际还在运行着。我一直都没有发现这个问题,直到过了很久以后,有一次我又拿出来欣赏以前写的程序(^_^孤芳自赏了),看着看着睡着了,等醒来的时候发现windows告诉我说资源不足,我一看竟然已经有3000多个线程在运行,我才想起来是不是这个原因。
所以,Java的资源泄露还是要引起注意的,即使GC很强大,我们也不能完全依赖它,我们还是要养成良好的编程习惯,至少自己释放资源也可以减轻GC的负担,能够提高一些性能。