목차
Java 메모리사용량 취득 Runtime.getRuntime().totalMemory, freeMemory
Java 가상 머신의 메모리 정보에 대해, 「합계」, 「사용량」, 「사용 가능 최대」의 정보를 돌려줍니다.
각 항목의 설명은 다음과 같습니다.
- 합계···Runtime.getRuntime().totalMemory()그래서 Java 가상 머신에 대한 메모리 할당량입니다.
- 사용량···Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()되고,
현재 메모리에 할당된 객체의 메모리 사용량입니다. - 사용 가능한 최대···Runtime.getRuntime().maxMemory()그래서 Java 가상 머신이 사용을 시도하는 최대 메모리 용량입니다.
사용량이 합계에 가까워지고 가비지 콜렉션에서도 여유 메모리를 확보할 수 없는 경우, Java 가상 머신은 「사용 가능 최대」까지 확장합니다.
샘플 프로그램
/** * Java 가상 머신의 메모리 총 용량, 사용량, * 사용을 시도하는 최대 메모리 용량의 정보를 돌려줍니다. * @return Java 가상 머신의 메모리 정보 */ public static String getMemoryInfo() { DecimalFormat f1 = new DecimalFormat("#,###KB"); DecimalFormat f2 = new DecimalFormat("##.1TP5 ().freeMemory() / 1024; long total = Runtime.getRuntime().totalMemory() / 1024; long max = Runtime.getRuntime().maxMemory() / 1024; long used = total - free; double ratio = ( used * 100 / (double)total); String info = "Java 메모리 정보 : 합계 =" + f1.format(total) + "," + "사용량 =" + f1.format(used) + " (" + f2.format(ratio) + "%)," + "사용 가능 최대 ="+f1.format(max); return info; }
실행 결과 1
◆실행예
public static void main(String[] args) { System.out.println(getMemoryInfo()); }
◆출력 결과
Java 메모리 정보 : 합계 = 1,984KB, 사용량 = 458KB (23.1%), 사용 가능 최대 = 65,088KB
실행 결과 2
◆실행예
Java 힙 크기를 변경하고 실행해 봅니다.
Java 힙 크기 값은 Java 명령 옵션에서 지정할 수 있습니다.
java -Xms64m -Xmx512m Main
-Xms 초기 힙 크기
Java 가상 머신에 대한 초기 메모리 할당량을 지정합니다. 기본값은 2MB입니다.
-Xmx 최대 힙 크기
Java 가상 머신에 대한 최대 메모리 할당량을 지정합니다. 기본값은 64MB입니다.
public static void main(String[] args) { System.out.println(getMemoryInfo()); }
◆출력 결과
Java 메모리 정보 : 합계 = 65,088KB, 사용량 = 524KB (0.8%), 사용 가능 최대 = 520,256KB
"총 Runtime.getRuntime().totalMemory()"-Xms"사용 가능한 최대 Runtime.getRuntime().maxMemory()"-Xmx에 링크되어 있습니다.