2010-12-02 8 views
7

Java에서 운영 체제의 전체 메모리 크기를 구할 수있는 방법이 있습니까? 사용 :Java에서 OS 메모리 크기 가져 오기

Runtime.getRuntime().maxMemory() 

은 운영 체제가 아닌 JVM에 허용되는 메모리를 반환합니다. 누구든지이 (자바 코드에서) 얻을 수있는 방법이 있습니까?

+0

무엇이 필요합니까? –

+0

@ Thorbjørn : 2GB RAM이있는 컴퓨터에서 실행하지만 JVM이 1GB로 제한되어있는 경우 샘플 코드에서 반환 된 1GB 크기가 아니라 2GB 크기를 얻고 싶습니다. 아니면 왜 내가 필요한지 묻는거야? –

+0

내가 무엇을 필요로하는지 묻습니다. –

답변

13
com.sun.management.OperatingSystemMXBean bean = 
    (com.sun.management.OperatingSystemMXBean) 
    java.lang.management.ManagementFactory.getOperatingSystemMXBean(); 
long max = bean.getTotalPhysicalMemorySize(); 

반환 (32 비트 제한) JVM에 사용할 RAM의 크기가 아니라 힙 크기에서 정보를 얻을 수 있습니다.

+0

좋아, 잘 알고있어! (+1) –

+1

"액세스 제한 : 'OperatingSystemMXBean'유형이 Java 8에서 API가 아니며, 특히 com.sun.management'를 참조하십시오. –

2

해당 정보를 가져 오는 Java 전용 방법은 없습니다. OS 특정 명령을 시작하려면 Runtime.exec()을 사용할 수 있습니다 (예 : Linux의 /usr/bin/free 여전히 Linux 시스템에서는 Java 파일 액세스 클래스 (FileInputStream)를 사용하여 /proc/meminfo을 구문 분석 할 수 있습니다.

2

순수 Java에서는 불가능합니다. 프로그램은 Java 가상 머신에서 실행되므로 OS에서 격리됩니다.

1) JNI를 사용하고 C++ 함수를 호출하여 수행 할 수 있습니다.
2) 또 다른 옵션은 Runtime.exec()을 사용하는 것입니다. 그럼 당신은 "cat /proc/meminfo"

+0

두 번째 옵션은 완벽하게 작동합니다. 감사. –