2013-03-16 15 views
1

동일한 크기의 다른 배열을 생성하는 정수형 배열을 정렬하는 프로그램을 작성했습니다. 정렬 후에는 새 배열을 사용하지 않으므로 완전히 제거하고 싶습니다. 지금까지 특정 유형의 요소를 삭제하는 것과 관련된 질문 만 찾았습니다. 도움?전체 배열 삭제

정보 (필요한 경우) :
원래 배열 : A[n]
새로운 배열 : B[n]
B[n]이 완전히 삭제해야합니다.

+0

자바 코드는 어디에 있습니까? – Sajmon

답변

5

정렬을 수행하는 메소드를 떠날 때마다 temp 배열이 자동으로 "삭제"되거나 (더 정확하게, 점유 된 메모리는 가비지 수집 대상이됩니다) (임시 배열은 메소드 내부에서 생성된다고 가정) .

Java에 명시 적 메모리 할당 해제가 거의 필요하지 않습니다.

3

어레이는 Java에서 참조 유형입니다.

arr = null; 
0

배열이 로컬 다음 가비지 수집을 위해 예약됩니다 당신의 정렬 방법에 정의 된 경우 방법이 더있을 것으로 종료하지 않는 경우 : 더 이상 사용하지 않으 당신은 배열 참조 null을 만들 수 있습니다 기존의 참조.

클래스 또는 인스턴스 변수 인 경우 해당 변수에 대한 모든 참조를 null으로 설정하십시오.

자바에서는 메모리 할당 해제에 대해 걱정할 필요가 없습니다. C의 stdlib free(void*) 또는 C++의 delete[] 연산자와 같은 것은 없습니다. 너는 단지 garbage collector이다.

1

B를 null로 설정하십시오. B = null;

이렇게하면 가비지 수집기가 실행될 때마다이를 정리합니다. 각 JVM에 자체 가비지 수집 알고리즘이있을 수 있기 때문에 가비지 콜렉션이 발생하는 시점을 제어 할 수는 없지만 가비지 콜렉터를 실행하여 메모리를 비우도록 시스템에 제안 할 수 있습니다.

System.gc();

참고 : 위에서 언급 한 것처럼 System.gc(); 쓰레기 수거가 수행 될 것을 제안 할 뿐이지 만 그것을 보장하지는 않습니다.

1

일반적으로 gc()는 참조가없는 메모리를 해제합니다. 그러나 array = null으로 메모리를 확보 할 수도 있습니다.

+1

조금 더 추가하면, array = null은 배열이 가비지 콜렉션 준비를 할 수 있도록 해줄 것입니다. 그러나 GC가 언제 실행될 지 확신 할 수 없습니다. – agpt