添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
侠义非凡的红金鱼  ·  Intel i9-11900K ...·  1 周前    · 
悲伤的汉堡包  ·  java word ...·  3 周前    · 
豪情万千的吐司  ·  深国检珠宝检测·  2 月前    · 
憨厚的芒果  ·  stress fracture - ...·  3 月前    · 
含蓄的莲藕  ·  Web3游戏引擎对比·  3 月前    · 

This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Download Microsoft Edge More info about Internet Explorer and Microsoft Edge

Retrieves the heap size excluding fragmentation. For example if the total GC heap size is 100mb and fragmentation, ie, space taken up by free objects, takes up 40mb, this API would report 60mb. A parameter indicates whether this method can wait a short interval before returning, to allow the system to collect garbage and finalize objects.

public:
 static long GetTotalMemory(bool forceFullCollection);
public static long GetTotalMemory (bool forceFullCollection);
static member GetTotalMemory : bool -> int64
Public Shared Function GetTotalMemory (forceFullCollection As Boolean) As Long

Parameters

true to indicate that this method can wait for garbage collection to occur before returning; otherwise, false .

Returns

Examples

The following example demonstrates how to use the GetTotalMemory method to get and display the number of bytes currently allocated in managed memory.

using namespace System; const long maxGarbage = 1000; ref class MyGCCollectClass public: void MakeSomeGarbage() Version^ vt; for ( int i = 0; i < maxGarbage; i++ ) // Create objects and release them to fill up memory // with unused objects. vt = gcnew Version; int main() MyGCCollectClass^ myGCCol = gcnew MyGCCollectClass; // Determine the maximum number of generations the system // garbage collector currently supports. Console::WriteLine( "The highest generation is {0}", GC::MaxGeneration ); myGCCol->MakeSomeGarbage(); // Determine which generation myGCCol object is stored in. Console::WriteLine( "Generation: {0}", GC::GetGeneration( myGCCol ) ); // Determine the best available approximation of the number // of bytes currently allocated in managed memory. Console::WriteLine( "Total Memory: {0}", GC::GetTotalMemory( false ) ); // Perform a collection of generation 0 only. GC::Collect( 0 ); // Determine which generation myGCCol object is stored in. Console::WriteLine( "Generation: {0}", GC::GetGeneration( myGCCol ) ); Console::WriteLine( "Total Memory: {0}", GC::GetTotalMemory( false ) ); // Perform a collection of all generations up to and including 2. GC::Collect( 2 ); // Determine which generation myGCCol object is stored in. Console::WriteLine( "Generation: {0}", GC::GetGeneration( myGCCol ) ); Console::WriteLine( "Total Memory: {0}", GC::GetTotalMemory( false ) ); using System; namespace GCCollectIntExample class MyGCCollectClass private const long maxGarbage = 1000; static void Main() MyGCCollectClass myGCCol = new MyGCCollectClass(); // Determine the maximum number of generations the system // garbage collector currently supports. Console.WriteLine("The highest generation is {0}", GC.MaxGeneration); myGCCol.MakeSomeGarbage(); // Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)); // Determine the best available approximation of the number // of bytes currently allocated in managed memory. Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false)); // Perform a collection of generation 0 only. GC.Collect(0); // Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)); Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false)); // Perform a collection of all generations up to and including 2. GC.Collect(2); // Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)); Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(false)); Console.Read(); void MakeSomeGarbage() Version vt; for(int i = 0; i < maxGarbage; i++) // Create objects and release them to fill up memory // with unused objects. vt = new Version(); open System let maxGarbage = 1000 type MyGCCollectClass() = member _.MakeSomeGarbage() = for _ = 1 to maxGarbage do // Create objects and release them to fill up memory with unused objects. Version() |> ignore [<EntryPoint>] let main _ = let myGCCol = MyGCCollectClass() // Determine the maximum number of generations the system // garbage collector currently supports. printfn $"The highest generation is {GC.MaxGeneration}" myGCCol.MakeSomeGarbage() // Determine which generation myGCCol object is stored in. printfn $"Generation: {GC.GetGeneration myGCCol}" // Determine the best available approximation of the number // of bytes currently allocated in managed memory. printfn $"Total Memory: {GC.GetTotalMemory false}" // Perform a collection of generation 0 only. GC.Collect 0 // Determine which generation myGCCol object is stored in. printfn $"Generation: {GC.GetGeneration myGCCol}" printfn $"Total Memory: {GC.GetTotalMemory false}" // Perform a collection of all generations up to and including 2. GC.Collect 2 // Determine which generation myGCCol object is stored in. printfn $"Generation: {GC.GetGeneration myGCCol}" printfn $"Total Memory: {GC.GetTotalMemory false}" Namespace GCCollectInt_Example Class MyGCCollectClass Private maxGarbage As Long = 10000 Public Shared Sub Main() Dim myGCCol As New MyGCCollectClass 'Determine the maximum number of generations the system 'garbage collector currently supports. Console.WriteLine("The highest generation is {0}", GC.MaxGeneration) myGCCol.MakeSomeGarbage() 'Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)) 'Determine the best available approximation of the number 'of bytes currently allocated in managed memory. Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False)) 'Perform a collection of generation 0 only. GC.Collect(0) 'Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)) Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False)) 'Perform a collection of all generations up to and including 2. GC.Collect(2) 'Determine which generation myGCCol object is stored in. Console.WriteLine("Generation: {0}", GC.GetGeneration(myGCCol)) Console.WriteLine("Total Memory: {0}", GC.GetTotalMemory(False)) Console.Read() End Sub Sub MakeSomeGarbage() Dim vt As Version Dim i As Integer For i = 0 To maxGarbage - 1 'Create objects and release them to fill up memory 'with unused objects. vt = New Version Next i End Sub End Class End Namespace

Remarks

If the forceFullCollection parameter is true , this method waits a short interval before returning while the system collects garbage and finalizes objects. The duration of the interval is an internally specified limit determined by the number of garbage collection cycles completed and the change in the amount of memory recovered between cycles. The garbage collector does not guarantee that all inaccessible memory is collected.

Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see: https://aka.ms/ContentUserFeedback .

Submit and view feedback for

This product