Javaからオペレーティングシステムの全メモリサイズを取得する方法はありますか?JavaからOSメモリサイズを取得する
Runtime.getRuntime().maxMemory()
は、オペレーティングシステムではなくJVMの許容メモリを返します。誰もが(Javaコードから)これを取得する方法がありますか?
Javaからオペレーティングシステムの全メモリサイズを取得する方法はありますか?JavaからOSメモリサイズを取得する
Runtime.getRuntime().maxMemory()
は、オペレーティングシステムではなくJVMの許容メモリを返します。誰もが(Javaコードから)これを取得する方法がありますか?
com.sun.management.OperatingSystemMXBean bean =
(com.sun.management.OperatingSystemMXBean)
java.lang.management.ManagementFactory.getOperatingSystemMXBean();
long max = bean.getTotalPhysicalMemorySize();
リターン(32bit版によって制限される)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"
2番目のオプションは問題なく動作します。ありがとう。 –
あなたは_know_する必要がありますか? –
@Thorbjørn:2GBのRAMを搭載したマシンで動作していて、JVMが1GBに制限されている場合は、サンプルコードから返される1GBのサイズではなく、2GBのサイズを取得します。それとも、なぜ私はそれが必要なのか尋ねていますか? –
私はあなたが必要なものを求めていますか? –