2016-05-16 4 views
0

仮想マシンで使用されているパーセンテージRAMを取得しようとしています。使用して、私はそれを達成する私のコンピュータ上でローカルに JAVAを使用して仮想マシンの空きメモリサイズ(RAM)を取得する方法

Double FreeRamSize = (double) mxBean.getFreePhysicalMemorySize() Double TotalRamSize = (double) mxBean.getTotalPhysicalMemorySize()

そして、それは完全に正常に動作します。 しかし、私は仮想マシン上に私のアプリケーションを展開する場合、私は物理的なメモリの合計サイズを持って、私のFreeRamSizeは常に0を返します。私はインターネット上のヒントを見つけませんでした。

ありがとうございました。

+2

私は完全に質問を得れば、私は知りませんが、あなたはあなたがアクセスする方法を変更する必要があるだろうと思いますどのようなプログラミングの観点 –

+0

によって、物理と仮想マシンの間に違いはありません仮想マシンのメモリ情報やってみました? –

+0

@FelicePollanoおそらく、私の問題を正しく説明していないかもしれません。私は仮想マシン上に空き物理メモリサイズを取得できません。それは常に0を返します。しかし、私は物理的なメモリの合計サイズを取得します。 (私のコンピュータ上のローカルでは両方の値があります)。 –

答えて

0

仮想マシンと物理マシンのRAMの基本的な違いは、Javaプロセスと完全に無関係であるため、仮想マシンを実行するためにメモリ情報コードを変更する必要はありません。

ちょうどキックのために、私は自分のバーチャルマシンでこれを問題なく走らせました。

double GiB = Math.pow(2, 30); 
OperatingSystemMXBean osBean = ManagementFactory.getPlatformMXBean(OperatingSystemMXBean.class); 

Double freeRamSize = (double) osBean.getFreePhysicalMemorySize(); 
Double totalRamSize = (double) osBean.getTotalPhysicalMemorySize(); 

System.out.println(freeRamSize/GiB + "/" + totalRamSize/GiB); 

1.8224868774414062/3.9995040893554688

+0

実際、私のパーソナルコンピュータのVMで試したところ、あなたと私のコードの両方で動作します。 私は自分の仕事でVMのフリーメモリを取り出すことができない理由はまだ分かりませんが、コード違反ではないようです。ご協力ありがとうございました! –

関連する問題