在这段代码中:
Properties prop = new Properties();
prop.load(new FileInputStream("config.properties"));
某些属性已加载,但文件输入流是否需要关闭或它是否以某种方式自行处理?
我需要创建一个变量,新文件输入流,然后关闭变量吗?
我也想知道,如果我创建一个变量,比如 String a = null
和 int b
;
当它们什么都没有时会消耗内存吗?
如果我在方法或循环中有它,它在超出范围时是否仍然消耗内存?
我想有人曾经说过它加载到内存中但不是“Activity ”?
最佳答案
JVM 可能会快速收集垃圾并关闭 FileInputStream。在一个小脚本中,这样做很好。然而,规范的成语是:
FileInputStream fis;
try {
fis = new FileInputStream("config.properties");
prop.load(fis);
} finally {
fis.close();
}
对于变量,每个变量都是一个引用,即使什么都不存储也会占用8个字节的内存(int一般只会占用4个字节,booleans更优化,但这些都是特例)。一旦声明离开作用域,这些局部引用将不占用内存(因为它们的堆栈空间消失了),但您创建的任何对象都将存在,直到它们被垃圾回收。
关于Java - 是否需要关闭 "new FileInputStream"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9024867/