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 接口中指定。
内存使用量监视机制旨在用于负载平衡或工作负载分布。例如,应用程序在其内存使用量超过特定阈值时,可以停止接收任何新的工作负载。它不适合用于供应用程序进行检测或从低内存情况恢复。
通知
此 MemoryMXBean 是一个 NotificationEmitter,如果任何一个内存池支持使用量阈值或集合使用量阈值(可以通过调用 MemoryPoolMXBean.isUsageThresholdSupported() 和 MemoryPoolMXBean.isCollectionUsageThresholdSupported() 方法确定),它将发出两种类型的通知。
•使用量阈值超过通知 - 用构造方法通知内存池的内存使用量增加,已达到或超过其使用量阈值。
•集合使用量阈值超过通知 - 用于通知,在 Java 虚拟机对内存池中不使用的对象进行了回收工作之后,该内存池的内存使用量已大于或等于其集合使用量阈值。
发出的通知是一个 Notification 实例,其用户数据设置为 CompositeData(表示包含构造该通知时内存池的信息的 MemoryNotificationInfo 对象)。CompositeData 包含 MemoryNotificationInfo 中描述的各个属性。
分享到:
相关推荐
一本非常好的详细介绍java虚拟机实现原理及详细介绍的的好书 有兴趣了解JVM底层知识的看看,太大了,分三部分,都下了才能解压
详细深入的介绍了java虚拟机原理,对于JVM工作原理讲的很透彻
一本非常好的详细介绍java虚拟机实现原理及详细介绍的的好书 有兴趣了解JVM底层知识的看看,太大了,分三部分,都下了才能解压
JAVA虚拟机原理讲解
java虚拟机原理
Java虚拟机 - Java虚拟机原理详解教程。
java 虚拟机原理浅析,希望大家来交流
一、什么是Java虚拟机 二、Java虚拟机的生命周期 三、Java虚拟机的体系结构
Java运行原理与Java虚拟机.pdf,欢迎下载
long果 深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)。讲解相当详细,值得一看。下载仅供参考学习,侵权联删。
一本非常好的详细介绍java虚拟机实现原理及详细介绍的的好书 有兴趣了解JVM底层知识的看看,太大了,分三部分,都下了才能解压
本书是继《深入理解Java虚拟机》之后的又一经典著作,它一方面遵循《Java虚拟机规范》,一方面又独辟蹊径,不仅能让Java虚拟机的学习变得更加简单和有趣,而且能让你对Java虚拟机的原理认识更深入和更深刻!...
很好的java基础原理学习………………………………………………
在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对JVM(JavaVirtualMachine)中的内存进行标记,并确定哪些内存需要回收,根据一定的回收策略,自动的回收内存,永不停息(NerverStop)的保证JVM...
Java虚拟机工作原理详解
30+个视频+深入理解Java虚拟机(jvm优化+内存模型+虚拟机原理)
本书是继《深入理解Java虚拟机》之后的又一经典著作,它一方面遵循《Java虚拟机规范》,一方面又独辟蹊径,不仅能让Java虚拟机的学习变得更加简单和有趣,而且能让你对Java虚拟机的原理认识更深入和更深刻!...
Java 虚拟机 中文和英文 文档,想了解java 虚拟机原理的看看
围绕Java虚拟机整体架构、编译器、class文件格式、加载、链接与初始化、指令集等核心主题对Java虚拟机进行全面而深入的分析,深刻揭示Java虚拟机的工作原理。同时,书中不仅完整地讲述了由Java SE 8所引入的新特性,...
java虚拟机的原理和作用,更深层地了解java程序的运行