如何使用Java获取Ram的大小和硬盘大小?

bha*_*ath 20 java

如何使用Java获取PC的Ram大小和硬盘大小?是否有可能通过Java在PC上获取当前登录的用户名?

Whi*_*g34 28

磁盘大小:

long diskSize = new File("/").getTotalSpace();
Run Code Online (Sandbox Code Playgroud)

用户名:

String userName = System.getProperty("user.name");
Run Code Online (Sandbox Code Playgroud)

我不知道用Java确定总系统内存的可靠方法.在Unix系统上你可以解析/proc/meminfo.您当然可以找到JVM可用的最大内存:

long maxMemory = Runtime.getRuntime().maxMemory();
Run Code Online (Sandbox Code Playgroud)

编辑:为了完整性(感谢Suresh S),这里是一种仅使用Oracle JVM获取总内存的方法:

long memorySize = ((com.sun.management.OperatingSystemMXBean) ManagementFactory
        .getOperatingSystemMXBean()).getTotalPhysicalMemorySize();
Run Code Online (Sandbox Code Playgroud)

  • +1:BTW您可以设置`-Duser.name = AUser`;) (5认同)
  • "仅限Oracle JVM"**不正确,因为JDK 1.8这是一个jdk.Exported类型,请参阅http://docs.oracle.com/javase/8/docs/jdk/api/javac/tree/ JDK/Exported.html (4认同)

Dea*_*mer 7

对于Ram Size,如果您使用的是java 1.5

java.lang.management包

com.sun.management.OperatingSystemMXBean mxbean = (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(mxbean.getTotalPhysicalMemorySize() + " Bytes "); 
Run Code Online (Sandbox Code Playgroud)


小智 5

import java.lang.management.*;
import java.io.*;

class max
{
    public static void main(String... a)
    {
        long diskSize = new File("/").getTotalSpace();
        String userName = System.getProperty("user.name");
        long maxMemory = Runtime.getRuntime().maxMemory();
        long memorySize = ((com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean()).getTotalPhysicalMemorySize();
        System.out.println("Size of C:="+diskSize+" Bytes");
        System.out.println("User Name="+userName);

        System.out.println("RAM Size="+memorySize+" Bytes");
   }
}
Run Code Online (Sandbox Code Playgroud)