2
많은 Thread 자바 예제와 Runnable 객체가 작업으로 생성되어 스레드로 전달되었습니다. 이러한 작업에 대한 참조가 없으므로이 작업이 Java에 의해 가비지 수집되지 않는 이유는 무엇입니까? 가비지 수집 및 여기서 잘못된 질문을하고 있습니까? 귀하의 소중한 의견을 나누십시오.Runnable은 Java에서 가비지 수집되지 않습니다
많은 Thread 자바 예제와 Runnable 객체가 작업으로 생성되어 스레드로 전달되었습니다. 이러한 작업에 대한 참조가 없으므로이 작업이 Java에 의해 가비지 수집되지 않는 이유는 무엇입니까? 가비지 수집 및 여기서 잘못된 질문을하고 있습니까? 귀하의 소중한 의견을 나누십시오.Runnable은 Java에서 가비지 수집되지 않습니다
개체에 대한 명시 적 참조가 없다고해서 내부 JVM 개체가 개체를 보유하지 않는다는 의미는 아닙니다.
는 예를 보자이보기의 개발자 관점에서 그것에 대한 언급은 없지만 내부적으로 프레임이 구성 요소의 목록이frame.add(new JButton("foobar"));
. 이것은 스레드에서 발생하는 것이므로 내부 스케줄러는 스레드에 대한 참조를 확실히 유지해야합니다. 스케줄러에서 출시 된 바로 그 때
스레드 자체가 쓰레기 수집됩니다 (더 참조 효과적으로 더 이상에 존재하지 않는 정도로)
어떻게 당신은 그들이 수집 한 쓰레기 없다는 것을 알고 있습니까? – nneonneo
@nneonneo 나는 +1과 같은 질문을하고 싶다. 좋아, 한 번 더 : '쓰레기 수거를하지 않는 것을 어떻게 알 수 있니?' – Elbek
@elbek이 부분을 테스트하지는 않았지만 논리적으로는 가비지 수집 중이라면 아무 것도 작동하지 않을 것이고 눈에 보이는 것보다 더 많은 것이 있어야한다는 결론을 내 렸습니다. – AKS