2016-06-30 3 views
2

배열을 반복하면서 다른 객체를 만드는 값을 기반으로합니다. 나는 이름이없는 객체를 어떻게 삭제하거나 참조 해제하는지 알고 싶습니다. 여기 이름없이 java에서 객체를 파괴하는 방법은 무엇입니까?

내가

new Test(); // so now how would I delete this instance of test? 
+4

;-) 수집 쓰레기라고합니다. 'delete' 나 그와 비슷한 것을 부를 필요가 없습니다. –

+2

Java 작동 방식에 대한 기본 자습서를 검토해야합니다. –

답변

4
new Test().m1().m2(); 
// here the previous instance may be deleted, there is no reference to `new Test()` 

그것은 (우리가 호출됩니다 정확히 모르는) 모든 작업 (m1 후 GC 에 의해 삭제됩니다 m2을 무엇을 의미하는지의 예 이 예에서의 메소드)가 수행됩니다.

Runtime.getRuntime().gc() (또는 간단하게는 System.gc())이라고 부를 수 있지만 가비지 수집기가 제공된다는 보장은 없습니다.

내가 상상할 수있는 방법을 그렸습니다.

enter image description here

+0

하지만 어떻게 명령에서 삭제할 수 있습니까? thx –

+2

java에는 그런 것이 없습니다. Java 가비지 콜렉션에서는 자동으로 제어 할 수 없습니다. – praveen

+0

우리는 JVM을 쓰레기 수거 (대량 해킹없이) 할 수 없지만'System.gc() '를 사용하여 정중하게 요청할 수 있습니다. –

0

객체가 가비지 컬렉션이 발생 어느 때 자동으로 가비지 수집 얻을 것이다 지역 변수 인 경우.

1

Java는 GC를 자체적으로 수행하므로 수동으로 수행 할 필요가 없습니다.

언급 된 개체는 GC에 적합하지 않아야합니다. JVM은 여러 스캔을 수행하고 이러한 객체를 한 세대에서 다른 세대로 이동하여 GC의 적합성을 결정하고 객체에 도달 할 수 없을 때 메모리를 해제합니다. 자바는 자동으로 삭제됩니다

1

, C/C++과는 달리 JVM 당신을 위해 쓰레기 수거 처리, 자바에서

관련 문제