一、使用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中。

在命令行中输入:

  1. jconsole  

如果弹出窗口,说明配置可用。

基本使用

这里使用的是本地JVM监控,如果要监控远程的JVM需要另外的配置。

首先,启动需要监控的Java应用程序。

通过任务管理器的进程标签,查看该进程的PID,比如是1388

在命令行启动jconsole:

  1. jconsole 1388

在启动的界面中:

  1. 概述:有关堆内存使用情况,线程,类加载和CPU使用情况的综述;
  2. 内存:内存的详细情况,堆和其他内存;
  3. 线程:峰值/活动线程,另外,各个线程的明细信息,检测死锁;
  4. 类:监控加载和卸载的类;
  5. vm摘要:有关vm的明细信息
  6. MBean:当前Java程序的MBean(如果有的话)的操作。

查看java池的大小 java查看内存占用命令_java

具体使用方法查看”帮助“中的”联机用户指南“。