java获取内存及硬盘使用情况

以前,java没有明确的方法来确定一个分区的可用空间。我们使用执行命令:

cat /proc/meminfo    
df -hl

来查看内存、硬盘使用情况:

root@ubuntu:~# cat /proc/meminfo
MemTotal:        3936412 kB
MemFree:         1581248 kB
MemAvailable:    2814556 kB
root@ubuntu:~# df -hl
Filesystem                   Size  Used Avail Use% Mounted on
udev                         1.9G     0  1.9G   0% /dev
tmpfs                        385M   14M  372M   4% /run
/dev/mapper/ubuntu--vg-root  116G  2.3G  108G   3% /
tmpfs                        1.9G     0  1.9G   0% /dev/shm
tmpfs                        5.0M     0  5.0M   0% /run/lock
tmpfs                        1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                    472M   58M  390M  13% /boot
tmpfs                        385M     0  385M   0% /run/user/0
jdk1.6之后, getTotalSpace(),getUsableSpace()和getFreeSpace()可以用来检查分区或磁盘空间细节。

import java.io.File;
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;

public class MemDisk
{
    public static void main(String[] args)
    {
        getMemInfo();
        System.out.println();
        getDiskInfo();
    }
    
    public static void getDiskInfo()
    {
        File[] disks = File.listRoots();
        for(File file : disks)
        {
            System.out.print(file.getPath() + "    ");
            System.out.print("空闲未使用 = " + file.getFreeSpace() / 1024 / 1024 + "M" + "    ");// 空闲空间
            System.out.print("已经使用 = " + file.getUsableSpace() / 1024 / 1024 + "M" + "    ");// 可用空间
            System.out.print("总容量 = " + file.getTotalSpace() / 1024 / 1024 + "M" + "    ");// 总空间
            System.out.println();
        }
    }
    
    public static void getMemInfo()
    {
        OperatingSystemMXBean mem = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
        System.out.println("Total RAM:" + mem.getTotalPhysicalMemorySize() / 1024 / 1024 + "MB");
        System.out.println("Available RAM:" + mem.getFreePhysicalMemorySize() / 1024 / 1024 + "MB");
    }

}
getFreeSpace()方法返回分区的自由空间数量的一个即时数。而getUsableSpace()方法还包含了另外一些功能来检查写许可和其它操作系统限制,这将返回一个可用空间数的更好的估计值。假如你想决定在写向一个文件之前是否你有足够的磁盘空间,那么,典型情况下getUsableSpace()将给你一个更精确的估计值。


你可能感兴趣的:(java)