问题描述
- java.io 中不使用close()方法资源为何cg无法回收?
-
如题,new FileInputStream()新建的文件流都必须要调用close()方法关闭,close方法的介绍是关闭和释放系统资源,并且如果未使用则会资源泄露。
但当指向 FileInputStream()对象的指针离开该对象,CG不是应该回收资源么,用new创建的对象都在栈中,为什么这个FileInputStream()不会自己回收呢?
解决方案
文件流对像不样,不是由虚拟机来掌握的。文件流一般申请的空间是直接到电脑内存去申请的。而一般对象是通过虚拟机的,所以虚拟机能掌握这些对象
解决方案二:
java-io File方法的使用
解决方案三:
对象只有没有指针指向的时候才可能被回收,但并不是马上就回收,而要看回收机制。
另外new出来的对象是放在堆中,指向对象的变量才放在栈里。
时间: 2024-11-03 13:52:12