黑马程序员技术交流社区
标题:
关于垃圾回收和close
[打印本页]
作者:
陈汉帆
时间:
2012-3-15 13:13
标题:
关于垃圾回收和close
java中有垃圾回收机制,IO流操作中为什么还要调用close进行方法关闭呢?
作者:
宋洪祥
时间:
2012-3-15 13:19
流不单在内存中分配了空间,也在操作系统占有了资源,java的gc是能从内存中回收不使用的对象,但对操作系统分配的资源是无能为力的,所以就要调用close()方法来通知OS来释放这个资源。
作者:
李深山
时间:
2012-3-15 14:02
java是带有垃圾回收功能,能搞定java本身资源,但是对于调用系统自身资源垃圾回收机制就搞不定,所以需要在代码中手工添加。
作者:
张润政
时间:
2012-3-15 15:27
这是两个不同的概念。java中的垃圾回收机制的作用是:当程序在运行的过程中,我们因为可能会产生许多的不再需要的变量,或者对象等等,我们称之为垃圾,如果程序很大,并且它在运行时不断地产生垃圾,那么早晚这些垃圾会把虚拟机所分配的最大内存空间给占用完了。我们的程序也就停止了运行。
io流它调用的是底层资源是你系统的东西,是你告诉了jvm给我分配一个输入或输出流,我需要使用了。当你不再需要这个底层资源的时候,java回收机制不能将它回收的,因为它不属于jvm所能操纵的,我们说io流是你告诉系统开启的,当你不需要使用的时候,自然要让jvm告诉系统我不需要了,你把它关了吧。跟垃圾的回收机制没有沾边。它不是jvm运行时产生的垃圾。而是系统分配的资源,用的时候我就给你,不用的时候你就得告诉我,我就给你关了。这是一种跟底层交互的机制。
作者:
foxpeter
时间:
2012-3-15 16:05
gc回收的是内存里的数据
而资源是操作系统负责分配管理的 如果不关闭 操作系统会一直保留
比如用java申请了一台打印机的资源,如果使用完了之后没有关闭该资源,那么其它程序就无法得到打印机的使用权
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2