MemoryPoolMXBean
MemoryPoolMXBean (메모리 풀 관리 인터페이스)
메모리 풀(memory pool)을 관리하기 위한 관리 인터페이스예요. 메모리 풀은 Java 가상 머신이 관리하는 메모리 자원을 나타내며 하나 이상의 메모리 관리자가 관리해요.
본문
Java 가상 머신은 이 인터페이스의 구현 클래스 인스턴스를 하나 이상 가질 수 있어요. 이 인스턴스는 MXBean으로 ManagementFactory.getMemoryPoolMXBeans() 호출 또는 플랫폼 MBeanServer를 통해 얻을 수 있어요.
MBeanServer 안에서 메모리 풀 MXBean을 유일하게 식별하는 ObjectName은 다음과 같아요:
java.lang:type=MemoryPool,name=<pool's name>
메모리 풀은 힙(heap) 또는 non-heap 메모리 영역 중 하나를 나타내요. 메모리 풀은 다음 속성들을 가져요: 메모리 사용량(getUsage), 최고 메모리 사용량(getPeakUsage), 사용 임계값(usage threshold), 컬렉션 사용 임계값(collection usage threshold, 일부 가비지 컬렉션 메모리 풀만 지원).
사용 임계값은 각 메모리 풀이 가지는 관리 가능한 속성으로, 기본값은 플랫폼 의존적이에요. 양수로 설정하면 임계값 교차 검사가 활성화되고, 0으로 설정하면 비활성화돼요. 임계값 검사는 보통 가비지 컬렉션 시점에 메모리 풀 단위로 수행되며, 임계값 교차 시마다 사용 임계값 횟수(usage threshold count)가 증가해요. 이 메커니즘은 낮은 오버헤드로 메모리 사용량의 증가 추세를 모니터링하기 위한 것이에요.
메모리 사용량은 폴링(polling)이나 임계값 알림 메커니즘으로 모니터링할 수 있어요. 폴링은 주기적으로 getUsage()나 isUsageThresholdExceeded()를 호출하고, 알림은 MemoryMXBean이 방출하는 임계값 초과 알림을 리스너가 받아 처리하는 방식이에요. Java 1.5부터 제공돼요.