장기 실행 동적 메모리를 많이 사용하는 Java 코드로 인해 메모리 부족 오류가 발생할 수 있습니다. 힙 공간의 메모리 부족으로 인해.
아래 프로그램에서 프로그램이 사용하는 Java 힙 여유 공간을 테스트할 수 있습니다. 힙 공간이 90% 이상 사용되는 경우 , 가비지 수집기가 명시적으로 호출됩니다. System.gc() 호출은 가비지 수집기가 완료될 때까지 호출 스레드를 차단합니다. 따라서 이 코드는 별도의 스레드에서 실행할 수 있습니다.
예시
public class GCTest { public void runGC() { Runtime runtime = Runtime.getRuntime(); long memoryMax = runtime.maxMemory(); long memoryUsed = runtime.totalMemory() - runtime.freeMemory(); double memoryUsedPercent = (memoryUsed * 100.0) / memoryMax; System.out.println("memoryUsedPercent: " + memoryUsedPercent); if (memoryUsedPercent > 90.0) System.gc(); } public static void main(String args[]) { GCTest test = new GCTest(); test.runGC(); } }
출력
memoryUsedPercent: 0.07187129404943532