Linux可用空间不正确

时间:2014-10-21 08:46:46

标签: java memory

我希望使用Java获得Linux可用空间和内存。

public final class EnvironmentCheck
{
    public EnvironmentCheck()
    {
        // If the HDD Free Space is less than 200 Megabytes write message HDD 
        // is too low
        if (200 > checkHDDFreeSpace())
        {
            System.out.println("*** WARNING Hard Drive free space " 
                   + checkHDDFreeSpace() 
                   + " Megabytes " + "is too low! ***");
        }

        // If the RAM Free Space is less than 200 Megabytes write message HDD 
        // is too low
        if (200 > checkRAMFreeSpace())
        {
            System.out.println("*** WARNING RAM free space " 
                   + checkRAMFreeSpace() 
                   + " Megabytes " + "is too low! ***");
        }
    }

    public long checkHDDFreeSpace()
    {
        long availableSpace = 0;

        FileSystem fs = FileSystems.getDefault();
        for (FileStore store : fs.getFileStores())
        {
            try
            {
                availableSpace = store.getUsableSpace() / (1024*1024);
            }
            catch (IOException e)
            {
            }
        }
        return availableSpace;
    }

    public long checkRAMFreeSpace()
    {
        Runtime rt = Runtime.getRuntime();
        long freeMem = rt.maxMemory() - (rt.totalMemory() - rt.freeMemory());
        return freeMem / (1024 * 1024);
    }
}

我总是得到这样的信息:

*警告硬盘空闲空间0兆字节太低! *

你能帮我修改一下我的代码吗?

在Windows上,我没有看到此警告消息。

2 个答案:

答案 0 :(得分:3)

我想你想要sum总空间

availableSpace += store.getUsableSpace() / (1024*1024);

答案 1 :(得分:2)

好像你只是从最终文件存储中返回值:

availableSpace = store.getUsableSpace() / (1024*1024);

始终为每个循环迭代重新分配availableSpace。这可能是你想要的(或不是!),但你隐含地隐藏了除最后一个之外的任何文件存储信息。