添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

Выполните обновление до 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, этот метод ожидает короткий интервал перед возвратом, пока система собирает мусор и завершает работу объектов. Длительность интервала — это внутренне заданное ограничение, определяемое количеством завершенных циклов сборки мусора и изменением объема памяти, восстановленной между циклами. Сборщик мусора не гарантирует, что будет собрана вся недоступная память.