Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface MemoryMXBean extends PlatformManagedObject
У виртуальной машины Java есть единственный экземпляр класса реализации этого интерфейса. Этот экземпляр, реализовывая этот интерфейс является MXBean, который может быть получен, вызывая ManagementFactory.getMemoryMXBean()
метод или от platform MBeanServer
метод.
ObjectName для того, чтобы однозначно определить MXBean для системы памяти в пределах MBeanServer:
java.lang:type=Memory
Это может быть получено, вызывая PlatformManagedObject.getObjectName()
метод. "Куча" может иметь фиксированный размер или может быть расширена и уменьшена. Память для "кучи" не должна быть непрерывной.
У виртуальной машины Java есть область метода, которая совместно используется среди всех потоков. Область метода принадлежит памяти не"кучи". Это хранит структуры на класс, такие как пул константы этапа выполнения, поле и данные метода, и код для методов и конструкторов. Это создается при запуске виртуальной машины Java.
Областью метода является логически часть "кучи", но реализация виртуальной машины Java может хотеть не или собирать "мусор" или уплотнять это. Подобный "куче", область метода может иметь фиксированный размер или может быть расширена и уменьшена. Память для области метода не должна быть непрерывной.
В дополнение к области метода реализация виртуальной машины Java может потребовать памяти для внутренней обработки или оптимизации, которая также принадлежит памяти не"кучи". Например, JIT-компилятор требует памяти для того, чтобы сохранить собственный машинный код, преобразованный из кода виртуальной машины Java для высокой производительности.
Memory pools
и memory managers
абстрактные объекты, которые контролируют и управляют системой памяти виртуальной машины Java. Пул памяти представляет область памяти, которой управляет виртуальная машина Java. У виртуальной машины Java есть по крайней мере один пул памяти, и это может создать или удалить пулы памяти во время выполнения. Пул памяти может принадлежать или "куче" или памяти не"кучи".
Распределитель памяти ответственен за управление одним или более пулами памяти. Сборщик "мусора" является одним типом распределителя памяти, ответственного за исправление памяти, занятой недостижимыми объектами. У виртуальной машины Java могут быть один или более распределителей памяти. Это может добавить или удалить распределители памяти во время выполнения. Пулом памяти может управлять больше чем один распределитель памяти.
Использование памяти может контролироваться тремя способами:
MemoryPoolMXBean
интерфейс. Механизм контроля использования памяти предназначается для использования распределения выравнивания нагрузки или рабочей нагрузки. Например, приложение прекратило бы получать любую новую рабочую нагрузку, когда ее использование памяти превышает определенный порог. Это не предназначается для приложения, чтобы обнаружить и восстановиться с низкого условия памяти.
Этот MemoryMXBean является a NotificationEmitter
это испускает два типа памяти notifications
если кто-либо из пулов памяти поддерживает порог использования или порог использования набора, который может быть определен, вызывая MemoryPoolMXBean.isUsageThresholdSupported()
и MemoryPoolMXBean.isCollectionUsageThresholdSupported()
методы.
usage threshold exceeded notification
- для того, чтобы уведомление, что использование памяти пула памяти увеличивается и достигло или превысило свое пороговое значение использования. collection usage threshold exceeded notification
- для того, чтобы уведомление, что использование памяти пула памяти больше чем или равно его порогу использования набора после того, как виртуальная машина Java израсходовала усилие в рециркуляции неиспользованных объектов в том пуле памяти. Испускаемое уведомление является a Notification
экземпляр, чей user data
устанавливается в a CompositeData
это представляет a MemoryNotificationInfo
объект, содержащий информацию о памяти, объединяет в пул, когда уведомление было создано. CompositeData содержит атрибуты как описано в MemoryNotificationInfo
.
ManagementFactory.getMemoryMXBean()
реализации NotificationEmitter
интерфейс, который позволяет слушателю быть зарегистрированным в пределах MemoryMXBean как слушатель уведомления. Ниже пример кода, который регистрирует MyListener, чтобы обработать уведомление, испускаемое MemoryMXBean. 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);
ManagementFactory.getPlatformMXBeans(Class)
, Спецификация JMX., Способы Получить доступ к MXBeansМодификатор и Тип | Метод и Описание |
---|---|
void |
gc()
Выполняет сборщик "мусора".
|
MemoryUsage |
getHeapMemoryUsage()
Возвращает текущее использование памяти "кучи", которая используется для объектного выделения.
|
MemoryUsage |
getNonHeapMemoryUsage()
Возвращает текущее использование памяти памяти не"кучи", которая используется виртуальной машиной Java.
|
int |
getObjectPendingFinalizationCount()
Возвращает приблизительное количество объектов, для которых находится на рассмотрении завершение.
|
boolean |
isVerbose()
Тесты, если многословный вывод для системы памяти включается.
|
void |
setVerbose(boolean value)
Включения или отключения многословный вывод для системы памяти.
|
getObjectName
int getObjectPendingFinalizationCount()
MemoryUsage getHeapMemoryUsage()
Количество используемой памяти в возвращенном использовании памяти является объемом памяти, занятым и живыми объектами и объектами мусора, которые не были собраны, если никто.
Доступ MBeanServer:
Отображенным типом MemoryUsage является CompositeData с атрибутами как определено в MemoryUsage
.
MemoryUsage
объект, представляющий использование памяти "кучи".MemoryUsage getNonHeapMemoryUsage()
Доступ MBeanServer:
Отображенным типом MemoryUsage является CompositeData с атрибутами как определено в MemoryUsage
.
MemoryUsage
объект, представляющий использование памяти не"кучи".boolean isVerbose()
void setVerbose(boolean value)
Каждый вызов этого метода включает или отключает многословный вывод глобально.
value
- true, чтобы включить многословному выводу; false, чтобы отключить.SecurityException
- если менеджер безопасности существует, и вызывающая сторона не имеет контроля ManagementPermission.void gc()
gc()
эффективно эквивалентно вызову: System.gc()
System.gc()
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.