赞
踩
Java虚拟机内存系统的管理接口。
Java虚拟机具有此接口的实现类的单一实例。实现此接口的实例是一个MXBean,可以通过调用 ManagementFactory.getMemoryMXBean()方法获得。
内存
Java虚拟机的内存系统管理以下类型的内存:
1.堆
Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。对象的堆内存由称为垃圾回收器的自动内存管理系统回收。
堆的大小可以固定,也可以扩大和缩小,堆的内存不需要是连续空间。
2.非堆内存
Java虚拟机管理堆之外的内存(称为非堆内存)。
Java虚拟机具有一个由所有线程共享的方法区。方法区属于非堆内存。它存储每个类结构,如运行时常量池、字段和方法数据,以及方法和构造方法的代码。它是在Jav 虚拟机启动时创建的。
方法区在逻辑上是堆的一部分,但Java虚拟机实现可以选择不对其进行回收或压缩。与堆类似,方法区的大小可以固定,也可以扩大和缩小,方法区的内存不需要是连续空间。
除了方法区外,Java虚拟机实现可能需要用于内部处理或优化的内存,这种内存也是非堆内存。例如,JIT编译器需要内存来存储从Java虚拟机代码转换而来的本机代码,从而获得高性能。
getObjectPendingFinalizationCount
int getObjectPendingFinalizationCount()
返回其终止被挂起的对象的近似数目。
返回:
其终止被挂起的对象的近似数目。
getHeapMemoryUsage
MemoryUsage getHeapMemoryUsage()
返回用于对象分配的堆的当前内存使用量。堆由一个或多个内存池组成。返回的内存使用量中的 已使用大小和 已提交大小为所有堆内存池的对应值的总和,而返回的内存使用量中表示堆内存设置的 初始大小和 最大大小则可能不等于所有堆内存池对应值的总和。
返回的内存使用量中已使用内存量为活动对象和尚未回收的垃圾对象(如果有)所占用内存的总量。
返回:
表示堆内存使用量的 MemoryUsage 对象。
getNonHeapMemoryUsage
MemoryUsage getNonHeapMemoryUsage()
返回 Java 虚拟机使用的非堆内存的当前内存使用量。非堆内存由一个或多个内存池组成。返回的内存使用量中的 已使用大小和 已提交大小为所有非堆内存池的对应值的总和,而返回的内存使用量中表示非堆内存设置的 初始大小和 最大大小则可能不等于所有非堆内存池对应值的总和。
返回:
表示非堆内存使用量的 MemoryUsage 对象。
isVerbose
boolean isVerbose()
测试内存系统的 verbose 输出是否已启用。
返回:
如果启用了内存系统的 verbose 输出,则返回 true;否则返回 false。
setVerbose
void setVerbose(boolean value)
启用或禁用内存系统的 verbose 输出。verbose 输出信息和 verbose 信息发送到的输出流都与实现有关。通常,只要垃圾回收时释放了内存,Java 虚拟机实现就会输出一条消息。
此方法的每次调用都会全局启用或禁用 verbose 输出。
参数:
value - 为 true 将启用 verbose 输出;为 false 将禁用输出。
抛出:
SecurityException - 如果存在安全管理器,且调用方不具有 ManagementPermission("control")。
gc
void gc()
运行垃圾回收器。调用 gc() 实际上等同于调用:
System.gc()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。