Java에서 운영 체제의 전체 메모리 크기를 구할 수있는 방법이 있습니까? 사용 :Java에서 OS 메모리 크기 가져 오기
Runtime.getRuntime().maxMemory()
은 운영 체제가 아닌 JVM에 허용되는 메모리를 반환합니다. 누구든지이 (자바 코드에서) 얻을 수있는 방법이 있습니까?
Java에서 운영 체제의 전체 메모리 크기를 구할 수있는 방법이 있습니까? 사용 :Java에서 OS 메모리 크기 가져 오기
Runtime.getRuntime().maxMemory()
은 운영 체제가 아닌 JVM에 허용되는 메모리를 반환합니다. 누구든지이 (자바 코드에서) 얻을 수있는 방법이 있습니까?
com.sun.management.OperatingSystemMXBean bean =
(com.sun.management.OperatingSystemMXBean)
java.lang.management.ManagementFactory.getOperatingSystemMXBean();
long max = bean.getTotalPhysicalMemorySize();
반환 (32 비트 제한) JVM에 사용할 RAM의 크기가 아니라 힙 크기에서 정보를 얻을 수 있습니다.
좋아, 잘 알고있어! (+1) –
"액세스 제한 : 'OperatingSystemMXBean'유형이 Java 8에서 API가 아니며, 특히 com.sun.management'를 참조하십시오. –
해당 정보를 가져 오는 Java 전용 방법은 없습니다. OS 특정 명령을 시작하려면 Runtime.exec()
을 사용할 수 있습니다 (예 : Linux의 /usr/bin/free
여전히 Linux 시스템에서는 Java 파일 액세스 클래스 (FileInputStream
)를 사용하여 /proc/meminfo
을 구문 분석 할 수 있습니다.
순수 Java에서는 불가능합니다. 프로그램은 Java 가상 머신에서 실행되므로 OS에서 격리됩니다.
1) JNI를 사용하고 C++ 함수를 호출하여 수행 할 수 있습니다.
2) 또 다른 옵션은 Runtime.exec()
을 사용하는 것입니다. 그럼 당신은 "cat /proc/meminfo"
두 번째 옵션은 완벽하게 작동합니다. 감사. –
무엇이 필요합니까? –
@ Thorbjørn : 2GB RAM이있는 컴퓨터에서 실행하지만 JVM이 1GB로 제한되어있는 경우 샘플 코드에서 반환 된 1GB 크기가 아니라 2GB 크기를 얻고 싶습니다. 아니면 왜 내가 필요한지 묻는거야? –
내가 무엇을 필요로하는지 묻습니다. –