|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
public interface MemoryMXBean
Java 가상 머신의 메모리 시스템의 관리 인터페이스입니다.
Java 가상 머신은, 이 인터페이스의 구현 클래스의 단일 인스턴스를 가집니다. 이 인터페이스를 구현하고 있는 인스턴스는,ManagementFactory.getMemoryMXBean()
메소드를 호출해 취득할 수 있다, 혹은 platform MBeanServer
메소드로부터 취득할 수 있는 MXBean 입니다.
MBeanServer 내에서 메모리 시스템의 MXBean 를 일의에 식별하기 위한 ObjectName 는 이하대로입니다.
java.lang:type=Memory
heap는, 고정 사이즈로 하는 일도, 확장 또는 축소할 수도 있습니다. heap의 메모리는 연속하고 있을 필요는 없습니다.
Java 가상 머신에는, 모든 thread간에 공유되는 「메소드 영역」이 있습니다. 메소드 영역은, heap 이외의 메모리에 속합니다. heap 이외의 메모리에는, 실행 완화시간 풀, field data나 메소드 데이터, 메소드와 생성자 의 코드 등, 클래스마다의 구조가 포함됩니다. 메소드 영역은, Java 가상 머신의 기동시에 작성됩니다.
메소드 영역은, 논리적이게는 heap의 일부입니다만, 가상 머신의 구현에서는, 가베지 컬렉트하지 않게 하거나 컴팩트화하거나 하는 것을 선택할 수 있습니다. heap와 같게, 메소드 영역은 고정 사이즈로 하거나 확장 또는 축소하거나 할 수가 있습니다. 메소드 영역의 메모리는 연속하고 있을 필요는 없습니다.
메소드 영역 외에, Java 가상 머신의 구현에서는, 내부 처리나 최적화를 위한 메모리를 필요로 합니다만, 이 메모리도 heap 이외의 메모리에 속합니다. 예를 들어, JIT 컴파일러에서는, 고성능을 실현하는데 Java 가상 머신 코드로부터 변환된 네이티브 기계 코드의 메모리가 필요합니다.
메모리 풀
과메모리 매니저
는, Java 가상 머신의 메모리 시스템을 감시 및 관리하는 추상 엔티티입니다.
메모리 풀은, Java 가상 머신이 관리하는 메모리 영역을 나타냅니다. Java 가상 머신은, 적어도 1 개의 메모리 풀을 가져, 실행중에 메모리 풀을 작성 또는 삭제할 수 있습니다. 메모리 풀은, heap 또는 heap 이외의 메모리에 속할 수가 있습니다.
메모리 매니저는, 1 개(살) 이상의 메모리 풀의 관리를 담당합니다. 가비지 컬렉터는, 도달할 수 없는 객체에 의해 점유 된 메모리의 재생을 담당하는 메모리 매니저의 1 종입니다. Java 가상 머신은, 1 개(살) 이상의 메모리 매니저를 가질 수가 있습니다. Java 가상 머신은, 실행중에 메모리 매니저를 추가 또는 삭제할 수 있습니다. 복수의 메모리 매니저로 1 개의 메모리 풀을 관리할 수 있습니다.
메모리 사용량은, 다음의 3 개의 방법으로 감시할 수 있습니다.
MemoryPoolMXBean
인터페이스로 지정됩니다.
메모리 사용량 감시 메카니즘은, load balancing 또는 작업 load sharing에 사용하는 것을 목적으로 하고 있습니다. 예를 들어, 어플리케이션은, 메모리 사용이 일정한 임계치를 넘었을 때에, 새로운 작업 부하의 수락을 정지합니다. 메모리 사용량 감시 메카니즘은, 어플리케이션을 위해서(때문에) 메모리 부족 조건을 검출하거나 메모리 부족 조건으로부터 회복하거나하기 위한의 것이 아닙니다.
MemoryPoolMXBean.isUsageThresholdSupported()
메소드와 MemoryPoolMXBean.isCollectionUsageThresholdSupported()
메소드를 호출해 판정할 수 있는사용량 임계치나컬렉션 사용량 임계치를 메모리 풀의 1 개가 지원하는 경우, 이 MemoryMXBean 는, 2 종류의 메모리통지
를 발행하는 NotificationEmitter
입니다.
사용량 임계치 초과 통지
는, 메모리 풀의 메모리 사용량이 증가해,사용량 임계치에 이르렀는지, 넘은 것을 통지합니다.
컬렉션 사용임계치 초과 통지
는, Java 가상 머신이 메모리 풀에서 사용하지 않는 객체의 리사이클에 최선을 다한 뒤, 메모리 풀의 메모리 사용량이컬렉션 사용량 임계치 이상인 것을 통지합니다. 발행된 통지는,Notification
인스턴스입니다.
이 인스턴스의사용자 데이터
는, 통지가 구축되었을 때의 메모리 풀에 관한 정보를 포함한 MemoryNotificationInfo
객체를 나타내는 CompositeData
로 설정되어 있습니다. CompositeData 은,MemoryNotificationInfo
에 기술된 속성을 포함합니다.
ManagementFactory.getMemoryMXBean()
에 의해 반환되는 MemoryMXBean 객체는, 청취자를 통지 청취자로서 MemoryMXBean 내에서 등록할 수 있도록(듯이) 하는 NotificationEmitter
인터페이스를 구현합니다.
이하는,MemoryMXBean 에 의해 발행된 통지를 처리하기 위한 MyListener 를 등록하는 샘플 코드입니다.
class MyListener implements javax.management.NotificationListener { public void handleNotification(Notification notif, Object handback) { // handle notification .... } } MemoryMXBean mbean = ManagementFactory.getMemoryMXBean(); NotificationEmitter emitter = (NotificationEmitter) mbean; MyListener listener = new MyListener(); emitter.addNotificationListener(listener, null, null);
메소드의 개요 | |
---|---|
void |
gc ()
가비지 컬렉터를 실행합니다. |
MemoryUsage |
getHeapMemoryUsage ()
객체의 할당에 사용되는 heap의 현재의 메모리 사용량을 돌려줍니다. |
MemoryUsage |
getNonHeapMemoryUsage ()
Java 가상 머신에 의해 사용되는 heap 이외의 현재의 메모리 사용량을 돌려줍니다. |
int |
getObjectPendingFinalizationCount ()
finalize를 중단하고 있는 객체의 대략의 수를 돌려줍니다. |
boolean |
isVerbose ()
메모리 시스템의 상세 출력이 유효한가 어떤가를 테스트합니다. |
void |
setVerbose (boolean value)
메모리 시스템의 상세 출력을 유효 또는 무효로 합니다. |
메소드의 상세 |
---|
int getObjectPendingFinalizationCount()
MemoryUsage getHeapMemoryUsage()
반환된 메모리 사용량에 있어서의 사용된 메모리의 양은, 라이브 객체와 수집되지 않았던 가베지 객체 (존재하는 경우)의 양쪽 모두에 의해 점유 된 메모리의 양입니다.
MBeanServer 액세스:
MemoryUsage 의 맵형은,MemoryUsage
로 지정된 속성을 가지는 CompositeData 입니다.
MemoryUsage
객체MemoryUsage getNonHeapMemoryUsage()
MBeanServer 액세스:
MemoryUsage 의 맵형은,MemoryUsage
로 지정된 속성을 가지는 CompositeData 입니다.
MemoryUsage
객체boolean isVerbose()
void setVerbose(boolean value)
이 메소드의 호출마다, 상세 출력은 포괄적으로 유효 또는 무효가 됩니다.
value
- 상세 출력을 유효하게 하는 경우는 true,
무효로 하는 경우는 false
SecurityException
- 시큐리티 매니저가 존재해,
호출원이 ManagementPermission("control")를
가지지 않는 경우void gc()
System.gc()
System.gc()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.