我正在使用Runtime的内存逼近方法来进行一些内存使用分析。我在给定时间创建了以下方法来近似JVM中的freeMemory数量:
private static long getFreeRuntimeMemory(){
long usedMem, freeMem;
usedMem = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
freeMem = Runtime.getRuntime().maxMemory() - usedMem;
//System.out.println("used "+ usedMem+ " free "+ freeMem);
return freeMem;
}
我将这个方法调用两次 - 在我的main方法的第一行,以及我的main方法的最后一行。在这两个调用中,我做了一些基于休眠的数据库检索。
奇怪的是,第一次调用时此方法的返回值较小。怎么可能?我确实创建了一些对象,它们不应该在主要结束之前解除分配。