本帖最后由 黑马—陈磊 于 2012-6-25 10:12 编辑
close释放的是资源,而不是持有资源的对象,java可以自动回收的是对象,表现为回收对象分配的内存,但不能回收资源,如果不执行close,可能会造成资源耗尽。
java中的垃圾回收机制的作用是:当程序在运行的过程中,我们因为可能会产生许多的不再需要的变量,或者对象等等,我们称之为垃圾,如果程序很大,并且它在运行时不断地产生垃圾,那么早晚这些垃圾会把虚拟机所分配的最大内存空间给占用完了。我们的程序也就停止了运行。
io流它调用的是底层资源是你系统的东西,是你告诉了jvm给我分配一个输入或输出流,我需要使用了。当你不再需要这个底层资源的时候,java回收机制不能将它回收的,因为它不属于jvm所能操纵的,我们说io流是你告诉系统开启的,当你不需要使用的时候,自然要让jvm告诉系统我不需要了,你把它关了吧。跟垃圾的回收机制没有沾边。它不是jvm运行时产生的垃圾。而是系统分配的资源,用的时候我就给你,不用的时候你就得告诉我,我就给你关了。这是一种跟底层交互的机制。 |