基于运行时内存方法获取freeMemory表现非常奇怪

时间:2016-02-10 13:40:55

标签: java hibernate memory-management jvm runtime

我正在使用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方法的最后一行。在这两个调用中,我做了一些基于休眠的数据库检索。

奇怪的是,第一次调用时此方法的返回值较小。怎么可能?我确实创建了一些对象,它们不应该在主要结束之前解除分配。

0 个答案:

没有答案