請有看看下面的代碼:DOTNET的內存使用(VB.Net 2005/.NET 2.0)
'Create array
Dim a(10000, 10000) As Integer
'Print memory of application and physical memory
Console.WriteLine(Process.GetCurrentProcess.PrivateMemorySize64)
Console.WriteLine(My.Computer.Info.AvailablePhysicalMemory)
'Do it twice again
Dim b(10000, 10000) As Integer
Console.WriteLine(Process.GetCurrentProcess.PrivateMemorySize64)
Console.WriteLine(My.Computer.Info.AvailablePhysicalMemory)
Dim c(10000, 10000) As Integer
Console.WriteLine(Process.GetCurrentProcess.PrivateMemorySize64)
Console.WriteLine(My.Computer.Info.AvailablePhysicalMemory)
For i As Integer = 0 To 10000
For j As Integer = 0 To 10000
a(i, j) = 0
Next
Next
Console.WriteLine(My.Computer.Info.AvailablePhysicalMemory)
和我的系統上的輸出:
430125056
2466795520
839479296
2463166464
1273315328
2461618176
2065424384
每次初始化數組,佔地約正如預期的那樣,400MB的應用程序內存。但是在使用值填充其中一個數組後,可用物理內存僅減少了400MB(任務管理器在for循環之後也只顯示了400MB ...)。
我一直以爲一個初始化的整數數組佔據了整個所需的內存,因爲它被填充爲0.有什麼意義呢?
操作系統用來管理實際物理內存與進程的虛擬內存空間不會有任何直接關聯。可用的物理內存不會告訴你任何有用的東西,因爲它會因外部因素(其他進程在運行,操作系統在交換等方面有多激進等)而改變 – Joe 2011-04-29 15:27:40
在附註中,我討厭'對於數組聲明而言,Dim變量(大小)與type類似,因爲它看起來非常像VB6中的靜態數組,儘管它是動態分配的。作爲type()=新類型(size){}'的Dim變量在實際發生的事情上更加清晰。 – ja72 2011-05-19 14:06:38