> Java > Java베이스 > 본문

3분만에 JAVA의 GC 개념 이해하기

angryTom
풀어 주다: 2019-11-30 16:36:32
앞으로
1666명이 탐색했습니다.

3분만에 JAVA의 GC 개념 이해하기

서문

GC(Garbage Collection)은 JVM을 학습하는 과정에서 빠질 수 없는 장애물입니다. 다음으로 GC를 체계적으로 배워보겠습니다.

3분만에 JAVA의 GC 개념 이해하기

무언가를 하기 전에 왜 그 일을 하는지 알아야 합니다. 이것은 GC에만 적용되는 것이 아니라 우리의 일상적인 공부와 삶에도 적용됩니다. 무슨 일이 일어나고 있고 왜 일어나는지 알아야만 할 수 있습니다. 모든 전투에서 무적입니다.

(추천 영상: java 영상 튜토리얼)

먼저 GC가 존재하는 이유와 JVM에서 GC가 어떤 역할과 역할을 하는지 알아보겠습니다.

GC가 필요한 이유

C++를 사용해 본 학생들은 객체가 차지하는 메모리가 프로그램이 끝날 때까지 사용되고 명시적으로 해제되기 전에는 다른 객체에 할당할 수 없다는 것을 알 수 있습니다. 이러한 쓸모 없는 객체를 수동으로 지우지 않으면 메모리가 곧 가득 차게 됩니다. JVM에서는 GC가 쓸모 없는 객체인지, 어떻게 처리할지 결정하는 데 도움이 됩니다. 메모리 생성 및 메모리 할당을 결정하는 전략**.

우리 JVM이 우리를 위해 GC 작업을 수행하는데 왜 GC를 배워야 하는가? 모든 것을 JVM에 맡기는 것이 더 낫지 않느냐고 묻는 학생들도 있습니다. 물론 일상생활에서 우리는 일반적으로 GC의 일부 세부 사항에 신경 쓰지 않지만 메모리 누수, 메모리 오버플로 및 높은 동시성 병목 현상이 발생하면 GC에서 작업하고 보다 자세한 분석을 모니터링하고 규제해야 합니다. .

메모리 누수: 프로그램에 동적으로 할당된 힙 메모리가 해제되지 않거나 어떤 이유로 해제될 수 없어 시스템 메모리가 낭비되어 프로그램 실행 속도가 느려지거나 시스템 충돌까지 초래하는 심각한 결과를 초래하는 것을 말합니다. .

메모리 오버플로: 응용 프로그램 시스템에 복구할 수 없는 메모리가 있거나 너무 많은 메모리를 사용하여 궁극적으로 프로그램이 제공할 수 있는 최대 메모리보다 더 많은 메모리를 사용하게 됩니다.

이제 문제는 가비지 수집을 수행해야 한다는 것입니다. 먼저 가비지가 어디에 있는지 알아야 합니다.

가비지가 어디에 있는지

앞서 JVM의 런타임 메모리 영역에 대해 이야기했고 우리는 스레드를 스레드 독점 영역으로 나눌 수 있다는 것을 알고 있습니다. 그리고 스레드 공유 영역, 스레드 독점 영역(프로그램 카운터, 가상 머신 스택, 로컬 메서드 스택)의 메모리 수명 주기는 스레드와 일치하며 할당된 메모리 크기는 이 영역은 클래스의 크기와 관련이 있습니다. 즉, 클래스 구조가 고정되면 메모리의 이 부분은 더 이상 변경되지 않으며 메서드나 스레드가 종료되면 메모리가 자연스럽게 재활용됩니다.

스레드 공유 영역의 힙 메모리와 메소드 영역은 그렇지 않습니다. 마찬가지로, 힙 메모리와 메소드 영역에 사용되는 메모리는 컴파일 중에 결정될 수 없습니다. 왜냐하면 인터페이스의 다른 구현과 다른 제어 조건 분기에 의해 실행되는 코드이기 때문입니다. 메소드는 완전히 반대일 수 있습니다. 우리는 어떤 객체가 런타임에 생성될지 알고 있으며, 이 메모리 부분의 할당 및 재활용은 동적이며 우리의 GC는 이 메모리 부분에 중점을 둡니다.

예를 들어 JVM이 자동차라면 스레드 전용 영역은 부품과 같습니다. 이러한 부품의 수명은 기본적으로 공장에서 출고될 때 알 수 있으며, 스레드 공유 영역은 휘발유 소비와 관련이 있습니다. 우리가 가는 경로에 따라서 우리가 걱정하는 부분은 어떻게 하면 연비를 더 효율적으로 운전할 수 있을지 등 이 부분이 동적으로 변할 것이라는 점이에요~

이 글은 php 중국어 홈페이지, java tutorial 칼럼에서 따왔습니다, Welcome to 배우다!

위 내용은 3분만에 JAVA의 GC 개념 이해하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿