一、使用JAVA类库
空闲内存:
Runtime.getRuntime().freeMemory()
总内存:
Runtime.getRuntime().totalMemory()
最大内存:
Runtime.getRuntime().maxMemory()
已占用的内存:
Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()
例如:
<span style="white-space:pre"> </span>for (int i = 0; i < 100000; i++) {
for (int j = 0; j < 100000; j++) {
Object o = new Object();
}
System.out.println("总内存:" + Runtime.getRuntime().totalMemory()
/ 1024 / 1024 + "M");
System.out.println("空闲内存:" + Runtime.getRuntime().freeMemory()
/ 1024 / 1024 + "M");
System.out.println("已使用内存:"
+ (Runtime.getRuntime().totalMemory() - Runtime
.getRuntime().freeMemory()) / 1024 / 1024 + "M");
}
二、jdk自带工具jconsole
简介
Jconsole,Java Monitoring and Management Console。
java监控和管理控制台,从java5开始,在JDK中提供。
用于对JVM中内存,线程和类等的监控。
基本配置
本文使用java6,SUN JDK1.6.0_03,使用JDK1.5版本使用略有不同。
本文使用windows XP。
确认jdk的bin目录设置到环境变量Path中。
在命令行中输入:
- jconsole
如果弹出窗口,说明配置可用。
基本使用
这里使用的是本地JVM监控,如果要监控远程的JVM需要另外的配置。
首先,启动需要监控的Java应用程序。
通过任务管理器的进程标签,查看该进程的PID,比如是1388
在命令行启动jconsole:
- jconsole 1388
在启动的界面中:
- 概述:有关堆内存使用情况,线程,类加载和CPU使用情况的综述;
- 内存:内存的详细情况,堆和其他内存;
- 线程:峰值/活动线程,另外,各个线程的明细信息,检测死锁;
- 类:监控加载和卸载的类;
- vm摘要:有关vm的明细信息
- MBean:当前Java程序的MBean(如果有的话)的操作。
具体使用方法查看”帮助“中的”联机用户指南“。