相关文章推荐
愤怒的西瓜  ·  cuda an illegal ...·  5 天前    · 
冲动的梨子  ·  CUDA kernel failed : ...·  5 天前    · 
行走的眼镜  ·  PyramidCU::GenerateFea ...·  5 天前    · 
深情的路灯  ·  illeegal memory ...·  5 天前    · 
面冷心慈的草稿本  ·  如何在Android ...·  1 年前    · 
愤怒的伤痕  ·  Element: <oj-table>·  1 年前    · 
欢乐的灭火器  ·  BeginEdit,CancelEdit和E ...·  1 年前    · 

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