자바 강제 가비지 컬렉션

Sheeraz Gul 2023년6월20일
자바 강제 가비지 컬렉션

이 자습서는 Java에서 가비지 수집을 강제하는 방법을 보여줍니다.

자바 강제 가비지 컬렉션

힙 사용률이 100%에 가까워질 때마다 OutOfMemoryError 위험이 최대치로 증가합니다. 이때 JVM은 가비지 수집을 강제 실행하고 메모리를 해제해야 합니다.

대부분의 경우 가비지 수집을 위해 JVM을 강제할 수는 없지만 필요할 때마다 몇 가지 방법을 사용하여 가비지 수집을 수행할 수 있습니다.

이 자습서에서는 Java의 다양한 가비지 수집 방법을 보여줍니다.

Java에서 가비지 수집을 위해 System.gc() 호출

System.GC() 메서드는 가비지 수집을 수행하기 위해 Java 코드의 어디에서나 호출할 수 있습니다. 가비지 수집의 우선 순위를 지정하고 가비지 수집이 호출될 때마다 몇 초 안에 발생합니다.

이 방법의 구문은 다음과 같습니다.

System.gc();

코드 어디에서나 가비지 수집을 수행하려면 System.gc()를 호출하기만 하면 됩니다. 이는 가비지 수집을 강제하는 것과 유사한 방식으로 작동합니다.

Java에서 가비지 수집을 위해 Runtime.getRuntime().gc() 호출

Runtime.getRuntime().gc()System.gc()를 호출하므로 유사한 방식으로 가비지 수집의 우선 순위를 지정합니다. Runtime.getRuntime()은 Java 코드에서 터미널 명령을 실행합니다.

Runtime.getRuntime().gc()System.gc 메서드는 동일합니다. 이 방법의 구문은 다음과 같습니다.

Runtime.getRuntime().gc();

구문과 같이 이 메서드를 호출하면 JVM이 가비지 수집을 수행하여 메모리 공간을 확보합니다.

jcmd를 사용하여 Java에서 강제 가비지 수집

jcmd Java 진단 명령은 가비지 수집 루틴을 트리거하는 JDK의 내장 유틸리티입니다. 이 가비지 수집은 JVM이 일시 중지를 안전하게 예약할 수 있을 때 트리거됩니다.

JVM이 일시 중지를 수행할 수 없는 경우 이 명령은 jmap과 동일한 오류를 발생시킵니다.

이 명령의 구문은 다음과 같습니다.

jcmd 1234 GC.run

여기서 숫자는 프로세스 ID이고 GC.run은 가비지 수집을 호출하는 데 사용됩니다.

Java Mission Control 또는 JConsole을 사용하여 Java에서 강제 가비지 수집

Java Mission Control 및 JConsole은 jcmd 명령과 상호 작용하는 사용자 친화적인 인터페이스를 제공합니다. Java Mission Control 또는 JConsole은 가비지 수집을 위해 JVM을 강제 실행할 수 있습니다.

JConsole 도구는 메모리 관리 페이지에 가비지 수집 실행이라는 버튼을 제공합니다. 클릭하면 JVM이 가비지 수집을 수행하도록 할 수 있습니다.

Java Mission Control은 개발자가 jcmd 기능을 선택할 수 있도록 도와줍니다. 여기에는 버튼을 클릭하기만 하면 실행할 수 있는 GC.run도 포함됩니다.

두 도구 모두 배후에서 jcmd 가비지 수집 명령을 호출합니다.

jmap을 사용하여 Java에서 강제 가비지 수집

JMAP(Java Memory Map)는 힙의 히스토그램을 인쇄하는 방법을 제공합니다. 그리고 jmap 명령이 호출될 때마다 가비지 수집 루틴을 강제 실행하는데, 이는 가비지 수집을 강제하는 올바른 방법으로 간주되지 않습니다.

JVM에 워크로드가 있고 가비지 수집을 수행할 수 없는 경우 jmap 명령에서 오류가 발생합니다.

다음 명령을 참조하십시오.

jmap -histo:live 1234

여기서 live는 히스토그램 옵션이고 그 앞의 숫자는 프로세스 ID입니다.

작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

관련 문장 - Java Garbage Collection