자바 강제 가비지 컬렉션
이 자습서는 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 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