2019년 8월 12일 월요일

Java Application 메모리 사용량 구하기, totalMemory(), freeMemory(), maxMemory()

모든 Java 애플리케이션에는 실행되는 환경과 인터페이스 할 수 있는 단일(single) Runtime 인스턴스가 제공된다. Runtime 인스턴스는 사용자가 직접 만들 수는 없고 getRuntime() 메서드에 의해서만 얻을 수 있다. 그리고 Runtime 인스턴스를 이용해 현재 애플리케이션의 메모리 사용 현황을 확인할 수 있다.

• Runtime.getRuntime().maxMemory() : 애플리케이션이 사용할 수 있는 총 메모리 양, -Xmx 값과 같다. 어떤 Java 애플리케이션이든 이 값을 초과하는 메모리는 사용할 수 없다. 실제 사용하는 메모리가 이 값에 근접하면 GC가 자주 발생하게 되므로 성능에 안좋은 영향을 끼치게 된다.
• Runtime.getRuntime().totalMemory() : 현재 애플리케이션에 할당된 총 메모리 양. (새로운 객체에 쓰일 메모리 영역 포함.)
• Runtime.getRuntime().freeMemory() : 새로 생성될 객체를 위해 현재 사용 가능한 메모리 공간. (available size in total memory.)

위 세가지 메서드로 실제 사용 중인 메모리, 앞으로 사용 가능한 메모리 등을 확인할 수 있다.

• 실제 사용 중인 메모리 (used memory) : totalMemory - freeMemory
• 할당되지 않았으나 앞으로 사용할 수 있는 메모리 (unallocated memory) : maxMemory - totalMemory
• 앞으로 사용 가능한 메모리 (total free memory) : maxMemory - totalMemory + freeMemory


https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html

댓글 없음:

댓글 쓰기