System.gc() 호출은 가비지 수집이 수행되도록 요청하며 보장하지 않습니다. 보증되지 않는 부분은 저에게 흥미 롭습니다. 누군가이 전화를 할 때 일어나는 정확한 과정을 설명 할 수 있습니까?System.gc()를 호출하면 장면 뒤에서 정확히 무엇이 발생합니까?
답변
는 보장이 없기 때문에 가비지 콜렉션이 일어날 것이라는 보장이 없다는 것을 JVM은 가비지 콜렉션을 지원한다. (나는 JLS에서 전혀 언급하지 않았고 확실히 index에는 없다).
그러나 "나는 보장 할 수 없다"는 생각은 약간 잘못된 것입니다. 태양 API docs에서 : 방법 호출에서 제어 반환, Java 가상 머신이 가 파기 된 객체에서 공간 을 확보하기 위해 최선의 노력을했다
.
그래, 아마도 보장 할 수는 없지만,이 방법을 호출하면 일반 JVM이 GC주기를 실제로 시작한다는 것을 알 수 있습니다. 아마도 일부 JVM은 그렇지 않을 것이며, 아마도 미래의 가비지 컬렉터는 그렇지 않을 것입니다. 그러나 현재로서는 광고되는 것을 수행합니다.
물론 애플리케이션 코드가이 메소드를 호출하는 이유는 거의 없습니다. JVM은 필요할 때 쓰레기를 수집합니다.
정확한 프로세스는 JVM에 따라 다르며 실제로 많은 연구가 진행되는 영역입니다. 이것은 실제로 일어날 일에 대해 명세가 너무 모호하기 때문에 가능합니다.
원래 Java는 "모든 것을 멈추고 모든 객체를보고 어떤 객체가 아직 살아 있는지 확인"했습니다. 이것은 1) 천천히 그리고 2) 모든 일이 중단되는 동안 중단되었습니다.
오늘날 Sun 기반 JVM은 대부분의 객체가 오래 가지 않기 때문에 여러 개의 객체 풀을 가지고 있으므로 별도의 풀을 많이 사용하지 않아도됩니다. 자바 5의 GC를 조정할 방법에
태양 문서에 어떤 일이 일어나는지에 매우 유익하다 :
정확한 프로세스는 JVM의 버전 및 공급 업체에 따라 다릅니다.
마크와 스윕, 생성 등 다양한 알고리즘이 있습니다. 보통 병렬 스레드로 실행됩니다.
JVM에서 System.gc()
disabled을 호출 할 수 있습니다. 그 이유 중 하나는 보장되지 않습니다. IBM의 Java theory and practice: Garbage collection and performance에 대해 자세히 설명하고 에 대해 분명히 보이는 것이 무엇이 있는지 GC가 실제로 번을 수행하면의 성능을 발휘할 수 있습니다. 또한 GC를 구현하는 데 사용되는 많은 알고리즘을 설명합니다.
또한 Sun은 다양한 GC 구현을 Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning에 설명했습니다.
- 1. 봄 - 장면 뒤에서 프록시하기
- 2. Java : openGL : JOGL : display() 메서드를 호출하면 장면 뒤에서 어떤 일이 발생합니까?
- 3. 스레드를 잠자기 할 때 정확히 무엇이 발생합니까?
- 4. iPhone 앱 아이콘을 탭하면 정확히 무엇이 발생합니까?
- 5. __str __()은 장면 뒤에서 decode() 메서드를 호출합니까?
- 6. 정확히 무엇이 ERROR_INVALID_ORDINAL을 의미합니까?
- 7. SecurityErrorEvent는 무엇이 발생합니까?
- 8. Git : 장면 뒤에 무엇이 생깁니 까
- 9. 정확히 무엇이 과도한 형태/인코딩입니까?
- 10. SQL Server 테이블 분할, 뒤에서 무엇이 일어나고 있습니까?
- 11. F #의 장면 뒤에서 패턴 일치가 어떻게 작동합니까?
- 12. jquery/jqtouch getJSON을 호출하면 무한 루프가 발생합니까?
- 13. 아약스를 호출하면 서버 측에서 어떤 일이 발생합니까?
- 14. web.config 파일의 staticcontent 태그는 정확히 무엇이 해당합니까?
- 15. 정확히 무엇이 자바 스크립트에서 벗어나 려는가
- 16. PanelDragDropTarget 및 ListBoxDragDropTarget : 정확히 무엇이 끌리고 있습니까?
- 17. Linq 뒤에서
- 18. 참조 유형 및 값 유형에 대한 형변환을 수행 할 때 정확히 무엇이 발생합니까?
- 19. .NET 실행 파일 (프로그램이로드되어 실행되는 지점까지 단계별로 실행)을 실행하면 정확히 무엇이 발생합니까?
- 20. Typekit은 어떻게 뒤에서 작동합니까?
- 21. 3D 장면 내의 3D 장면
- 22. 장면 뒤의 int에서 double 변환?
- 23. 실버 라이트 딥 줌은 어떻게 뒤에서 작동합니까?
- 24. 같은 메서드 내에서 메서드를 호출하면 메모리 누수가 발생합니까?
- 25. SQL을 호출하면 멀티 스레드 응용 프로그램에 병목 현상이 발생합니까?
- 26. 왜 BinaryReader에서 Dispose()를 호출하면 컴파일 오류가 발생합니까?
- 27. jQuery 함수가 완료 콜백에서 자신을 호출하면 스택에 재귀 위험이 발생합니까?
- 28. 길이가 0 인 write()를 호출하면 어떤 결과가 발생합니까?
- 29. ADO.NET DataSet에서 .WriteXml을 호출하면 암시 된 .AcceptChanges()가 발생합니까?
- 30. 이 단순한 Objective-C 코드는 정확히 무엇이 잘못 되었습니까?
사양에서 "최선의 노력"은 특별한 노력이 전혀없는 것으로 해석 될 수 있습니다. –