做一个内存监测的程序,遇到一个问题,请教高人
// Get memory pools.
static java.util.List <MemoryPoolMXBean> mpools = ManagementFactory
.getMemoryPoolMXBeans();
// Total number of memory pools.
static int numPools = mpools.size();
/**
* Returns maximum memory available in the system.
*/
public static float getMaxMem(int npool)
{
MemoryPoolMXBean mp = mpools.get(npool);--------这里报错
float totalMemory = mp.getUsage().getMax();
return totalMemory;
}
/**
* Returns current used memory in the system.
*/
public static float getUsedMemory(int npool)
{
MemoryPoolMXBean mp = mpools.get(npool);--------这里报错
float usedMemory = mp.getUsage().getUsed();
return usedMemory;
};
有高人知道是什么问题吗?
------解决方案--------------------mpools.get(npool);--------这里报错 // 应该没有这个方法的
你的程序得到了应该是Java 虚拟机管理的内存,并不是实际的物理内存量
getMemoryPoolMXBeans()
返回 Java 虚拟机中的 MemoryPoolMXBean 对象列表。
public interface MemoryPoolMXBean内存池的管理接口。内存池表示由 Java 虚拟机管理的内存资源,由一个或多个内存管理器对内存池进行管理。
Java 虚拟机具有此接口的实现类的一个或多个实例。实现此接口的实例是 MXBean,可以通过调用 ManagementFactory.getMemoryPoolMXBeans() 方法或从平台 MBeanServer 方法获得。
在 MBeanServer 中惟一标识内存池的 MXBean 的 ObjectName 为:
java.lang:type=MemoryPool,name=pool 's name
------解决方案--------------------编译报错还是运行报错?
------解决方案--------------------学习中