나는 다음과 같은 코드를 가지고메모리를 올바르게 지우는 방법은 무엇입니까?
Vehicle v= new Vehicle();
Car car = v.getCar();
v.clear();
클리어() 차량에서 나는 clear()
를 호출 한 후 그 누구도 다른 차 개체에 대한 액세스를 얻을 수 없는지 확인하기 위해 노력하고
clear()
{
car=null;
}
입니다. 위와 같이 null로 설정할 수는 있지만 다른 사람이 참조를 유지하는 것을 멈추지 않으며 여전히 메모리 위치에 액세스하여 데이터를 가져올 수 있습니다.
내가 로그 아웃 후, System.gc()
유스 케이스가 전화를 걸 해달라고, 난 메모리에 저장된 모든 선택을 취소해야합니다. 또한 저장소 메커니즘은 싱글 톤입니다. 싱글 톤을 사용하지 않더라도이 문제는 계속 발생합니다.
게터 방법으로 '자동차'를 비공개로 유지하고 수비 사본을 반환 할 수 있습니다. 주제에 유용 할 수있는 [또 다른 질문] (http://stackoverflow.com/q/10951820/1089811). –
방어 복사본을 반환하면 무엇을 얻을 수 있습니까? 메모리 사용에 관한 한 문제는 더 악화 될 수 있습니다. –