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

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

Nov 30, 2019 pm 04:36 PM
gc 개념

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

메타버스 개념은 무엇을 의미하나요? 메타버스 개념은 무엇을 의미하나요? Feb 22, 2024 pm 03:55 PM

메타버스는 기술을 사용하여 현실 세계를 매핑하고 상호 작용하는 환상의 세계입니다. 분석 1 메타버스(Metaverse)는 기술적인 방법을 구사하여 현실세계와 연결하고 창조하며, 지도화하고 상호작용하는 환상의 세계이며, 최신 사회발전 시스템을 갖춘 데이터 생활공간이다. 2차원 우주는 본질적으로 현실 세계의 가상 기술이자 디지털 프로세스로, 콘텐츠 제작, 경제 시스템, 고객 경험 및 물리적 세계 콘텐츠의 많은 변화가 필요합니다. 3 그러나 메타버스의 발전 추세는 공유 인프라, 표준 및 프로토콜의 지원을 받아 많은 도구와 플랫폼의 지속적인 결합과 발전을 통해 최종적으로 형성됩니다. 보충: 메타버스는 무엇으로 구성되어 있나요? 1 메타버스는 메타(Meta)와 구절(Verse)로 구성되어 있는데, 메타(Meta)는 초월(Transcendence), V

Golang의 gc 최적화 전략에 대한 토론 Golang의 gc 최적화 전략에 대한 토론 Mar 06, 2024 pm 02:39 PM

Golang의 가비지 수집(GC)은 항상 개발자들 사이에서 뜨거운 주제였습니다. 빠른 프로그래밍 언어인 Golang에 내장된 가비지 컬렉터는 메모리를 매우 잘 관리할 수 있지만, 프로그램의 크기가 커질수록 일부 성능 문제가 발생하는 경우가 있습니다. 이 기사에서는 Golang의 GC 최적화 전략을 살펴보고 몇 가지 구체적인 코드 예제를 제공합니다. Golang의 가비지 수집 Golang의 가비지 수집기는 동시 마크 스윕(concurrentmark-s)을 기반으로 합니다.

Gunicorn의 기본 및 기능에 대해 자세히 알아보세요. Gunicorn의 기본 및 기능에 대해 자세히 알아보세요. Jan 03, 2024 am 08:41 AM

Gunicorn의 기본 개념 및 기능 Gunicorn은 Python 웹 애플리케이션에서 WSGI 서버를 실행하기 위한 도구입니다. WSGI(Web Server Gateway Interface)는 Python 언어로 정의된 사양으로 웹 서버와 웹 애플리케이션 간의 통신 인터페이스를 정의하는 데 사용됩니다. Gunicorn을 사용하면 WSGI 사양을 구현하여 Python 웹 애플리케이션을 프로덕션 환경에 배포하고 실행할 수 있습니다. Gunicorn의 기능은 다음과 같습니다.

클래스 개념을 사용하여 직사각형의 면적과 둘레를 계산하는 Java 프로그램을 작성하세요. 클래스 개념을 사용하여 직사각형의 면적과 둘레를 계산하는 Java 프로그램을 작성하세요. Sep 03, 2023 am 11:37 AM

Java 언어는 오늘날 전 세계에서 가장 일반적으로 사용되는 객체 지향 프로그래밍 언어 중 하나입니다. 클래스 개념은 객체지향 언어의 가장 중요한 특징 중 하나입니다. 클래스는 객체의 청사진과 같습니다. 예를 들어, 집을 짓고 싶을 때 우리는 먼저 집의 청사진을 만듭니다. 즉, 집을 어떻게 지을 것인지를 보여주는 계획을 만듭니다. 이 계획에 따르면 우리는 많은 집을 지을 수 있습니다. 마찬가지로 클래스를 사용하면 많은 객체를 만들 수 있습니다. 클래스는 자동차, 자전거, 펜 등과 같은 실제 개체인 많은 개체를 만들기 위한 청사진입니다. 클래스는 모든 객체의 특성을 가지며, 객체는 이러한 특성의 값을 갖습니다. 이 기사에서는 클래스 개념을 사용하여 직사각형의 둘레와 면을 찾는 Java 프로그램을 작성합니다.

Spring MVC의 주요 개념을 익히십시오: 이러한 중요한 기능을 이해하십시오 Spring MVC의 주요 개념을 익히십시오: 이러한 중요한 기능을 이해하십시오 Dec 29, 2023 am 09:14 AM

SpringMVC의 주요 기능 이해: 이러한 중요한 개념을 익히려면 특정 코드 예제가 필요합니다. SpringMVC는 개발자가 MVC(Model-View-Controller) 아키텍처 패턴을 통해 유연하고 확장 가능한 구조를 구축하는 데 도움이 되는 Java 기반 웹 애플리케이션 개발 프레임워크입니다. 웹 애플리케이션. SpringMVC의 주요 기능을 이해하고 익히면 웹 애플리케이션을 보다 효율적으로 개발하고 관리할 수 있습니다. 이 기사에서는 SpringMVC의 몇 가지 중요한 개념을 소개합니다.

Oracle RAC 소개 및 핵심 개념 Oracle RAC 소개 및 핵심 개념 Mar 07, 2024 am 11:39 AM

OracleRAC(RealApplicationClusters)의 소개 및 핵심 개념 기업의 데이터 양이 지속적으로 증가하고 고가용성, 고성능에 대한 요구가 부각되면서 데이터베이스 클러스터 기술은 점점 더 중요해지고 있습니다. OracleRAC(RealApplicationClusters)는 이러한 문제를 해결하기 위해 설계되었습니다. OracleRAC는 오라클이 출시한 고가용성, 고성능 클러스터 데이터베이스 솔루션입니다.

Oracle 홈 디렉토리란 무엇입니까? Oracle 홈 디렉토리의 개념과 기능에 대한 자세한 설명 Oracle 홈 디렉토리란 무엇입니까? Oracle 홈 디렉토리의 개념과 기능에 대한 자세한 설명 Mar 08, 2024 am 08:18 AM

제목: Oracle 마스터 카탈로그: 개념, 기능 및 코드 예제 Oracle 데이터베이스의 마스터 카탈로그(MasterCatalog)는 데이터베이스의 기본 디렉터리 구조이며 데이터베이스 개체에 대한 메타데이터 및 기타 데이터베이스 정보를 저장하는 데 사용됩니다. 홈 디렉토리는 데이터베이스의 관리 센터 역할을 하며 테이블, 인덱스, 뷰, 사용자 등 데이터베이스의 모든 개체에 대한 정보를 기록하며 데이터베이스 구성 정보 및 권한 정보도 포함합니다. Oracle 데이터베이스에서는 홈 디렉토리의 개념이 매우 중요합니다.

Java 기술 스택의 개념과 실제 적용 분석 Java 기술 스택의 개념과 실제 적용 분석 Jan 13, 2024 pm 02:04 PM

Java 기술 스택의 개념과 실제 응용 프로그램을 이해하려면 구체적인 코드 예제가 필요합니다. 제목: Java 기술 스택과 실제 응용 프로그램에 대한 심층적인 이해가 필요합니다. 서론: 소프트웨어 개발 분야에서 널리 사용되는 기술 아키텍처입니다. , Java 기술 스택은 많은 개발자에게 가장 인기 있는 선택이 되었습니다. 이는 프런트엔드에서 백엔드까지 개발의 모든 측면을 다루면서 함께 작동하는 일련의 기술로 구성됩니다. 이 기사에서는 Java 기술 스택의 개념을 자세히 살펴보고 일반적인 기술 구성 요소를 소개하며 독자가 Java를 더 잘 이해하고 적용하는 데 도움이 되는 몇 가지 실용적인 코드 예제를 제공합니다.

See all articles