MemoryMXBean

 

本文来源:jdk1.6中文文档

java.lang.management
接口 MemoryMXBean


public interface MemoryMXBean
 

Java 虚拟机内存系统的管理接口。

Java 虚拟机具有此接口的实现类的单一实例。实现此接口的实例是一个 MXBean ,可以通过调用 ManagementFactory.getMemoryMXBean() 方法或从平台 MBeanServer 方法获得。

在 MBeanServer 中唯一标识内存系统的 MXBean 的 ObjectName 为:

java.lang:type=Memory
内存

Java 虚拟机的内存系统管理以下类型的内存:

1. 堆

Java 虚拟机具有一个 ,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。对象的堆内存由称为垃圾回收器 的自动内存管理系统回收。

堆的大小可以固定,也可以扩大和缩小。堆的内存不需要是连续空间。

2. 非堆内存

Java 虚拟机管理堆之外的内存(称为非堆内存 )。

Java 虚拟机具有一个由所有线程共享的方法区 。方法区属于非堆内存。它存储每个类结构,如运行时常量池、字段和方法数据,以及方法和构造方法的代码。它是在 Java 虚拟机启动时创建的。

方法区在逻辑上是堆的一部分,但 Java 虚拟机实现可以选择不对其进行回收或压缩。与堆类似,方法区的大小可以固定,也可以扩大和缩小。方法区的内存不需要是连续空间。

除了方法区外,Java 虚拟机实现可能需要用于内部处理或优化的内存,这种内存也是非堆内存。例如,JIT 编译器需要内存来存储从 Java 虚拟机代码转换而来的本机代码,从而获得高性能。

内存池和内存管理器

内存池 内存管理器 都是抽象实体,对 Java 虚拟机的内存系统进行监视和管理。

内存池表示 Java 虚拟机管理的内存区域。Java 虚拟机至少有一个内存池,而且可以在执行期间创建或删除内存池。内存池可以是堆内存,也可以是非堆内存。

内存管理器负责管理一个或多个内存池。垃圾回收器就是一种内存管理器,负责回收不可到达对象占用的内存。Java 虚拟机可以有一个或多个内存管理器。可以在运行期间添加或删除内存管理器。一个内存池可以由多个内存管理器进行管理。

内存使用量监视

对于内存系统而言,内存使用量是一个非常重要的监视属性。例如,内存使用量可以指示:

  • 应用程序的内存使用量,
  • 自动内存管理系统上的工作负载,
  • 潜在的内存泄漏。

可以采用三种方式监视内存使用量:

  • 轮询
  • 使用量阈值通知
  • 集合使用量阈值通知

具体细节在 MemoryPoolMXBean 接口中指定。

内存使用量监视机制旨在用于负载平衡或工作负载分布。例如ÿ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值