garbage collection 예제

이 자습서에서는 가비지 수집이 핫스팟 JVM에서 작동하는 방식에 대한 기본 을 설명합니다. 가비지 수집기의 작동 방식을 배운 후에는 Visual VM을 사용하여 가비지 수집 프로세스를 모니터링하는 방법을 알아봅니다. 마지막으로 Java SE 7 핫스팟 JVM에서 사용할 수 있는 가비지 수집기는 알아봅니다. Java 코드를 사용한 가비지 수집 및 메모리 관리의 예입니다. 아래 코드에서는 10000 문자열의 배열을 만들기 전에, 초기화 후 및 모든 개체의 할당 해제 후, 문자열을 만든 후 메모리 크기를 확인합니다. 메모리 사용률은 각 단계 후에 인쇄됩니다. 이제 우리는 자바의 가비지 수집이 자동으로 있음을 알고 있습니다. Java가 가비지 수집을 수행하는 시기를 확인할 수 있습니다. 직렬 GC의 또 다른 인기있는 용도는 동일한 컴퓨터에서 많은 수의 JVM이 실행되는 환경에서입니다(경우에 따라 사용 가능한 프로세서보다 더 많은 JVM!). 이러한 환경에서는 JVM이 가비지 수집을 수행하는 경우 가비지 수집이 더 오래 지속될 수 있더라도 한 프로세서만 사용하여 나머지 JVM의 간섭을 최소화하는 것이 좋습니다. 그리고 직렬 GC는이 트레이드 오프에 잘 맞습니다. 시각적 GC 탭에는 가비지 수집기에서 진행되는 모든 활동이 표시됩니다.

Eden 공간이 채워지고 데이터가 두 서바이벌 공간 S1과 S0 간에 이동하는 것을 볼 수 있습니다. 또한 가비지 수집기와 관련된 그래프와 통계가 오른쪽에 표시됩니다. 자바 객체는 힙에서 생성되고 힙은 자바에서 가비지 수집을 위해 세 부분으로 나 나누어지며, 이들은 힙의 젊은 세대, 임기 또는 구 세대 및 파마 영역이라고합니다. 직렬 수집기는 Java SE 5 및 6의 클라이언트 스타일 컴퓨터의 기본값입니다. 직렬 수집기에서는 단일 가상 CPU를 사용하여 부자 및 주요 가비지 수집이 직렬로 수행됩니다. 또한 마크 콤팩트 컬렉션 메서드를 사용합니다. 이 메서드는 이전 메모리를 힙의 시작 부분으로 이동하여 새 메모리 할당이 힙 끝에 있는 단일 연속 메모리 청크로 만들어집니다. 이러한 메모리 압축을 사용하면 힙에 새 메모리 덩어리를 더 빠르게 할당할 수 있습니다. finalize() 메서드는 개체가 가비지 수집되기 전에 매번 호출됩니다. 이 메서드는 정리 처리를 수행하는 데 사용할 수 있습니다. 이 메서드는 Object 클래스에서 정의 됩니다: 그림 2.2: GC 루트는 JVM에서 참조 하는 개체 이므로 다른 모든 개체가 가비지 수집 되지 않도록 유지 합니다. 자바스크립트 엔진에는 가비지 수집기라고 하는 백그라운드 프로세스가 있습니다.

그것은 모든 개체를 모니터링하고 도달 할 수없는 된 것을 제거합니다. 자동 가비지 수집은 힙 메모리를 보고 사용 중인 개체와 사용 되지 않는 개체를 식별하고 사용되지 않는 개체를 삭제하는 프로세스입니다. 사용 중인 개체 또는 참조된 개체는 프로그램의 일부가 해당 개체에 대한 포인터를 계속 유지 관리한다는 것을 의미합니다. 사용되지 않는 개체 또는 참조되지 않은 개체는 프로그램의 모든 부분에서 더 이상 참조되지 않습니다. 따라서 참조되지 않은 개체에서 사용하는 메모리를 회수할 수 있습니다. CMS 수집기는 일시 중지 시간이 부족하고 가비지 수집기와 리소스를 공유할 수 있는 응용 프로그램에 사용해야 합니다.