자바의 메모리소멸에 관한 메커니즘이 궁금합니다.
FileData data1 = new FileData();
data1.fileName = "나루토";
data1.fileSize = "32222";
data1.fileDate = "1월20일";
ArrayList<FileData> arr = new ArrayList<FileData>();
arr.add(data1);
data1 = null;
FileData data = arr.get(0);
System.out.println(data.fileName);
System.out.println(data.fileSize);
System.out.println(data.fileDate);
요런 코드가 있다고 가정할때
현재 FileData 객체에 대한 참조주소값을
data1, arr, data에서 메모리상의 FileData 객체를 참조하는 상황이잖아요?
그렇다면 data1을 null로 하더라도,
아직 두곳에서 참조를 하고 있다는 말이되나요?
arr과 data에서 아직 객체를 참조하고 잇으니 메모리수거의 대상이 아니라 생각합니다.
그래서 출력을 해봐도 잘나오구요.
그렇다는건 나머지 참조주소값을 모두 다 null처리해야지 가비지컬렉터에 수거가 된다는 의미가 되는건가요?
null처리를 하지 않으면 현재 메서드를 종료할때가 아니면 수거되지 않는건가요?