2010-12-02 3 views
7

Javaからオペレーティングシステムの全メモリサイズを取得する方法はありますか?JavaからOSメモリサイズを取得する

Runtime.getRuntime().maxMemory() 

は、オペレーティングシステムではなくJVMの許容メモリを返します。誰もが(Javaコードから)これを取得する方法がありますか?

+0

あなたは_know_する必要がありますか? –

+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(); 

リターン(32bit版によって制限される)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

2番目のオプションは問題なく動作します。ありがとう。 –

関連する問題