2017-01-03 29 views
1

私はコンソールアプリケーションのRAM使用量を取得しようとしていると、この目的のために私が使用している:取得プロセスのRAM使用量

WorkingSet64によって返された値が本当に大きいですが
var ramUsage = Process.GetCurrentProcess().WorkingSet64; 

と私はそれらがkbs thoであると仮定します。私は100%ではないと確信しています。メガバイトを取得するには1024で割る必要がありますか?1024 * 1024で割りますか?

Process.WorkingSet64によって返された値が正確に何であるかを誰かが明らかにすることができます。

+1

「ワーキングセット」*はWindows(Googleを使用して見つけることができます)で特定の意味を持ちますが、その意味はアプリケーション開発者としては特に意味がありません。 .NETのようなガベージコレクション環境では、余分なメモリがたくさんあるシステムでは、ワーキングセットが非常に大きくなり、アプリケーションが実際に必要とするメモリ量が非常に大きくなる可能性が高くなります。この値で何をしようとしていますか?メモリ使用量を分析する場合は、実際のメモリプロファイラを使用する必要があります。 –

答えて

1

the documentationによると、このプロパティから返される数値はバイト単位です。

したがって、KBに変換するには、1024で除算します。メガバイトに変換するには、1024で除算します。。等々。

+0

mbでRAM使用量を取得するには、1024 * 1024で分ける必要がありますか? –

+0

@ dB.Employee技術的にはそうですが、メモリ使用量が1024か1000かどうかについて論争があるため、注意が必要です。P – Jaxi

+2

論争はありません。 Windowsは、1キロバイト== 1024バイトのバイナリ表現を明白に使用します。 –

0

Process.WorkingSet64プロパティはバイト単位で返されます。

プロパティ値 タイプ:バイト単位System.Int64

物理メモリの量は、関連するプロセスのために割り当てられたプロパティに関するMSDN物品1として 。 Windowsので

https://msdn.microsoft.com/en-us/library/system.diagnostics.process.workingset64%28v=vs.110%29.aspx

は、メガバイト単位で値を取得するために、あなたは* 1024×1024で割ることで正しい

var ramAllocation = Process.GetCurrentProcess().WorkingSet64; 
var allocationInMB = ramUsage/(1024 * 1024); 

側注:Windowsは、JEDEC標準の場所1を使用していますキロバイト= 1024バイト。 IEC規格では、1キロバイト= 1000バイトと1キビバイト= 1024バイトが定義されています。 10.6以降のOSXではICEメガバイトが使用されるため、1キロバイト= 1000バイトです。いくつかのLinuxディストリビューションは、10.10以降のUbuntuのように、ICE接頭辞(1メガビット= 1024キビビット、1メガバイト= 1000キロバイト)を使用しています。このため、HDDを購入したときに、Windows(1MB = 1024kB)のサイズが広告されたサイズ(通常は1MB = 1000kB)よりも小さいように見えることがあります。

はまた、コーディグレーこれは割り当てバイト数ではなく、使用バイトの数であると指摘しました。 OSは、プログラムが使用する正確なバイト数よりも多くのメモリを割り当てます。通常は、使用していない直後にメモリを再利用しません。

+0

Windowsでは、[JEDEC 100B.01](https://en.wikipedia.org/wiki/JEDEC_memory_standards#Unit_prefixes_for_semiconductor_storage_capacity)標準を使用しています.1Kバイトは1,024バイトです。なぜそれがキビバイトを使用しないのですか?そのユニットは1998年まで確立されておらず、Windowsは1998年以前にどのプレフィックスを使用するかを決める必要がありました。たとえキビプレフィックスが愚かで誰も聞こえないという事実を乗り越えようとしたとしてもそれを実際に使用すると、ユーザーインターフェイスの表示にのみ影響します。 APIは変更できませんでした。 HDDはマーケティング上の理由からのみ使用されます。 –

+0

@CodyGray私は私の答えを編集しました。これは、これが、例えば、エラーなどの理由によるものではなく、異なる基準によるものであることがはっきりしていました。実装では、デザイン。私はそれが愚かであることに同意しますが、まだ使用されており、2つの接頭辞を使用するためにIEEE、NIST、EU標準で採用されています。 – Lithium

関連する問題