方法创建的对象在退出时删除

时间:2013-08-20 02:58:44

标签: java memory methods

在退出特定方法时是否删除了方法中创建的对象/字段?

示例:

public static void createFolder() {

    File folder = new File(C:\example\path "foldername");
    folder.mkdir();
}

退出“createFolder”方法后,用于存储文件“文件夹”的MEMORY会被删除吗?

1 个答案:

答案 0 :(得分:3)

File引用的folder对象在退出方法时有资格进行垃圾回收,因为对该方法的唯一引用(folder)超出了范围。

当它实际上是垃圾收集时无法确切地说出来,但是在那之后的某个时间。

更一般地说,方法中的局部变量在堆栈上分配,并在超出范围时被删除。如果它们是基元(int,float,long等),它们就会立即停止存在。如果它们是引用(如在您的情况下),则引用将立即停止存在,但只要引用存在,引用的对象将继续存在。例如,如果您的createFolder()方法返回folder的值,并且调用者在其自己的一个变量中保留了该引用,那么File对象将不会(还)有资格获得GC。当所有对象的引用不再存在时,该对象本身就有资格获得GC。该语言没有准确指定GC何时发生。

这与一些与“弱”引用有关的深奥主题有点复杂,但你可以暂时忽略它们。