Этот браузер больше не поддерживается.

Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.

Скачать Microsoft Edge Дополнительные сведения об Internet Explorer и Microsoft Edge

Извлекает размер кучи, за исключением фрагментации. Например, если общий размер кучи сборки мусора составляет 100 мб, а фрагментация, т. е. пространство, занимаемое свободными объектами, занимает 40 МБ, этот API будет сообщать о 60 мб. Параметр указывает, может ли этот метод выдержать короткий интервал времени ожидания перед возвратом, пока система выполняет сборку мусора и завершает объекты.

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

Параметры

Значение true , указывающий, что перед возвратом этот метод может дождаться выполнения сборки мусора; в противном случае — false .

Возвращаемое значение

Примеры

В следующем примере показано, как использовать GetTotalMemory метод для получения и отображения количества байтов, выделенных в настоящее время в управляемой памяти.

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

Комментарии

forceFullCollection Если параметр имеет значение true , этот метод ожидает короткий интервал перед возвратом, пока система собирает мусор и завершает работу объектов. Длительность интервала — это внутренне заданное ограничение, определяемое количеством завершенных циклов сборки мусора и изменением объема памяти, восстановленной между циклами. Сборщик мусора не гарантирует, что будет собрана вся недоступная память.

Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе: https://aka.ms/ContentUserFeedback .

Отправить и просмотреть отзыв по

Этот продукт