- 浏览: 94260 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
assasszt:
写的很透彻,厉害!能不能问个 问题:cookie 应该是浏览器 ...
Tomcat之Session和Cookie大揭密 -
赵武艺:
有时间把全部代码贴出来看看,只看这个看不懂?
Ajax请求,利用JFreeChart,页面无刷新画带“map”的图 -
e_soft:
解决办法:
拔了网线就好了,具体什么原因正在查找.
我也在 ...
MyEclipse开发JSP页面假死问题解决办法
本文来源: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
接口中指定。
内存使用量监视机制旨在用于负载平衡或工作负载分布。例如,应用程序在其内存使用量超过特定阈值时,将会停止接收任何新的工作负载。它不适合用于供应用程序进行检测并从低内存情况恢复。
通知
此 MemoryMXBean
是一个 NotificationEmitter
,如果任何一个内存池支持使用量阈值
或集合使用量阈值
(可以通过调用 MemoryPoolMXBean.isUsageThresholdSupported()
和 MemoryPoolMXBean.isCollectionUsageThresholdSupported()
方法确定),它将发出两种类型的通知
。
-
使用量阈值超过通知
- 用于通知内存池的内存使用量增加,已达到或超过其使用量阈值 。 -
集合使用量阈值超过通知
- 用于通知在 Java 虚拟机对内存池中不使用的对象进行了回收工作之后,该内存池的内存使用量已大于或等于其集合使用量阈值 。
发出的通知是一个 Notification
实例,其用户数据
设置为
CompositeData
(表示包含构造该通知时内存池信息的
MemoryNotificationInfo
对象)。CompositeData
包含 MemoryNotificationInfo
中描述的各个属性。
NotificationEmitter
ManagementFactory.getMemoryMXBean()
返回的 MemoryMXBean
对象实现了 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);
<!-- ========== METHOD SUMMARY =========== --><!-- -->
void
|
gc
()
运行垃圾回收器。 |
MemoryUsage
|
getHeapMemoryUsage
()
返回用于对象分配的堆的当前内存使用量。 |
MemoryUsage
|
getNonHeapMemoryUsage
()
返回 Java 虚拟机使用的非堆内存的当前内存使用量。 |
int
|
getObjectPendingFinalizationCount
()
返回其终止被挂起的对象的近似数目。 |
boolean
|
isVerbose
()
测试内存系统的 verbose 输出是否已启用。 |
void
|
setVerbose
(booleanvalue)
启用或禁用内存系统的 verbose 输出。 |
<!-- ============ METHOD DETAIL ========== --><!-- -->
getObjectPendingFinalizationCount
int getObjectPendingFinalizationCount ()
getHeapMemoryUsage
MemoryUsage getHeapMemoryUsage ()
返回的内存使用量中已使用内存量为活动对象和尚未回收的垃圾对象(如果有)所占用内存的总量。
MBeanServer 访问
:
MemoryUsage
的映射类型为
CompositeData
,具有 MemoryUsage
中指定的属性。
MemoryUsage
对象。getNonHeapMemoryUsage
MemoryUsage getNonHeapMemoryUsage ()
MBeanServer 访问
:
MemoryUsage
的映射类型为
CompositeData
,具有 MemoryUsage
中指定的属性。
MemoryUsage
对象。isVerbose
boolean isVerbose ()
setVerbose
void setVerbose (booleanvalue)
此方法的每次调用都会全局启用或禁用 verbose 输出。
value
- 为 true
将启用 verbose 输出;为 false
将禁用输出。
SecurityException
-
如果存在安全管理器,且调用方不具有 ManagementPermission("control")。gc
void gc ()
gc()
实际上等同于调用:
System.gc()
System.gc()
<!-- ========= END OF CLASS DATA ========= -->
发表评论
-
版本管理
2010-07-27 11:08 0几个分布式vcs比较 http://blog.csdn.ne ... -
UML工具
2010-07-14 15:51 0Enterprise Architect,java编程思想作者 ... -
设计模式
2010-07-13 13:47 0代理模式 可以在不改变接口的前提下 ... -
java
2010-07-13 13:45 946我们为什么一直选择Java http://blog.cs ... -
eclipse
2010-07-12 18:14 1165eclipse 分屏 http://www.coderanc ... -
在java中利用动态编译实现eval
2008-12-24 04:49 1035我们知道,在很多脚本语言中都有eval涵数,它可以把字符串转换 ... -
Java入门--认识理解Java中native方法
2008-12-25 01:18 1266Java不是完美的,Java的不足除了体现在运行速度上要比传统 ... -
Java的数据类型
2008-12-25 21:36 1146Java的简单数据类型 数据类型 数据类型就 ... -
解读JAVA内存优化编程的三个方法
2008-12-25 21:43 1157一.代码优化 内存会溢出肯定和代码逃不了关系,99 ... -
JDK1.5新特性介绍
2008-12-26 03:36 885JDK1.5新特性介绍 2004-09-11 00: ... -
java源代码分析----jvm.dll装载过程
2008-12-27 02:37 1370本文来源:http://www.matri ... -
Java 泛型的理解与实现
2008-12-27 04:04 41很多人不知道Java 泛型 ... -
selectmethod=cursor的含义及其使用
2008-11-01 02:49 924连接字符串中碰到的SelectMethod=cursor ... -
数字格式化
2008-11-02 23:48 765Double sum = 78342 .0d; ... -
JAVA命令说明
2008-12-06 23:04 1900一、运行class文件 执行 ... -
主题:-jar参数运行应用时classpath的设置方法
2008-12-07 04:11 771当用java -jar yourJarExe.jar来运行一个 ... -
SDK、JDK、JRE和JVM的关系
2008-12-14 15:43 1106摘自: http://hi.baidu.com/lxcry ... -
Dom4j的使用(全而好的文章)
2008-12-15 12:23 654Dom4j 使用简介 作者:冰云 iceclo ... -
Antlr入门详细教程
2008-12-18 16:24 2411一、 Antlr 的主要类: ... -
深入浅出CGlib-打造无入侵的类代理
2008-12-18 20:38 584CGlib是什么? CGlib是一个强大的,高性能,高质量的 ...
相关推荐
MemoryMXBean memoryMxBean = ManagementFactory.getMemoryMXBean(); MemoryUsage heapMemoryUsage = memoryMxBean.getHeapMemoryUsage(); MemoryUsage nonHeapMemoryUsage = memoryMxBean.getNonHeapMemoryUsage...
MemoryMXBean memoryMxBean = ManagementFactory.getMemoryMXBean(); MemoryUsage heapMemoryUsage = memoryMxBean.getHeapMemoryUsage(); MemoryUsage nonHeapMemoryUsage = memoryMxBean.getNonHeapMemoryUsage...
`MemoryMXBean`可以获取内存使用情况的总览,而`MemoryUsage`则用于详细查看各个内存区域(如堆、非堆、代码缓存等)的使用情况。你可以通过以下步骤获取内存信息: 1. **获取MemoryMXBean实例**: 使用`...
4. **`java.lang.management.MemoryMXBean`**: 提供了对JVM内存管理的访问,包括堆内存和非堆内存的信息。`MemoryMXBean`的实例可以通过`ManagementFactory.getMemoryMXBean()`获得。这个接口包含`...
在`java.lang.management`包中,`MemoryMXBean`接口提供了获取内存管理信息的方法。例如,我们可以获取`MemoryUsage`对象,它包含了堆内存(Heap Memory)和非堆内存(Non-Heap Memory)的使用细节。`...
这个脚本可能使用Java的`java.lang.Runtime`或`java.lang.management.MemoryMXBean`接口来获取系统内存信息,包括总内存、已分配内存、空闲内存等。例如,可以使用以下Java代码: ```java import java.lang....
Java提供`MemoryMXBean`和`MemoryPoolMXBean`接口来获取内存使用情况。以下代码展示了如何获取总的物理内存和Java堆内存的信息: ```java import java.lang.management.ManagementFactory; import java.lang....
Java提供了一个`MemoryMXBean`接口,它允许我们获取JVM的内存使用情况。同样,我们需要获取其实例: ```java MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean(); MemoryUsage heapMemoryUsage = ...
`Runtime`类可以提供系统总的内存信息,而`MemoryMXBean`则可以获取堆内存、非堆内存以及垃圾回收器的状态。通过这些信息,我们可以监控内存使用情况,防止内存泄漏,并适时调整JVM的内存配置。 网络监控通常涉及...
而`MemoryMXBean`则提供了更深入的内存管理信息,包括堆内存、非堆内存(如元空间)的使用情况,以及垃圾收集器的状态。 为了监控内存分配和回收,我们可以使用`java.lang.instrument.Instrumentation`接口,配合预...
此程序可能使用了Java提供的API,如`java.lang.Runtime`或`java.lang.management.MemoryMXBean`来获取服务器的内存统计数据,如堆内存、非堆内存、垃圾收集器状态等。 Ajax的核心在于XMLHttpRequest对象,它允许...
2. Java后台:处理Ajax请求,获取服务器的内存统计数据,如堆内存、非堆内存、垃圾回收等信息,可能使用Java的`java.lang.Runtime`或`java.lang.management.MemoryMXBean`等类。 3. JavaScript/Ajax代码:负责在...
服务器端的JSP页面接收到请求后,可以调用Java的内置内存管理API,如`java.lang.Runtime`和`java.lang.management.MemoryMXBean`,来获取内存信息,包括堆内存(Heap Memory)、非堆内存(Non-Heap Memory)、垃圾...
例如,`ClassLoadingMXBean`可以提供关于已加载类的数量等信息,而`MemoryMXBean`则能提供内存使用情况。 要与这些MXBeans交互,有两种主要途径:直接访问MXBean接口和通过MBeanServer接口间接访问。直接访问允许...
在Java中,可以使用`java.lang.management`包提供的`MemoryMXBean`接口来获取内存使用情况。通过`OperatingSystemMXBean`,我们可以获取到系统总内存、已用内存、空闲内存等数据。此外,还可以监控堆内存和非堆内存...
MemoryMXBean memoryBean = ManagementFactory.getMemoryMXBean(); MemoryUsage heapUsage = memoryBean.getHeapMemoryUsage(); System.out.println("堆内存使用: " + heapUsage.getUsed() + " 字节, 总量: " + ...
这可能涉及Java的内置内存管理API,如`Runtime.getRuntime()`或`MemoryMXBean`,来获取内存统计信息。 3. 数据解析和展示:客户端JavaScript接收到服务器返回的数据后,需要解析并将其展示在网页上,可能通过图表...
例如,可能使用了`java.lang.Runtime`类或`java.lang.management.MemoryMXBean`来监控堆内存、非堆内存和垃圾回收的状态。 JSP页面可能返回这些内存数据,然后Ajax回调函数接收这些数据并在客户端(浏览器)端动态...
例如,我们可以通过`MemoryMXBean`和`MemoryUsage`接口获取堆内存的使用情况。 接下来,我们需要创建一个Ajax请求来定期(比如每隔几秒)调用服务器上的一个JSP页面,这个页面会返回当前的内存使用数据。在JSP中,...