変数に使用するメモリ量についての質問です。
以下のコードで、byte配列を定義します。同時に、ProcessクラスのPrivateMemorySize64の値を取得し、配列を定義する前後のメモリ量を取得します。
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.Diagnostics; 7 8namespace ByteMemory 9{ 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 long beforeMemorySize = 0; 15 long afterMemorySize = 0; 16 Process p = Process.GetCurrentProcess(); 17 p.Refresh(); 18 19 beforeMemorySize = p.PrivateMemorySize64; 20 21 byte[] byteData = new byte[10000]; 22 23 for (int i = 0; i < 10000; i++) 24 { 25 byteData[i] = 1; 26 } 27 28 p.Refresh(); 29 afterMemorySize = p.PrivateMemorySize64; 30 31 Console.WriteLine(string.Format("現在のメモリ:{0}", afterMemorySize - beforeMemorySize)); 32 33 Console.ReadLine(); 34 } 35 } 36}
PrivateMemorySize64は対象のプロセスで占有しているメモリ量を取得するので、この例だとbyte配列定義する前後のメモリ量の差を取れば10000bytesになると予想していましたが、実際には、73728bytesと表示されました。
PrivateMemorySize64は、変数のメモリサイズとは別のデータなのでしょうか?
変数に使われているメモリサイズを取得することはできないのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/03 15:29