GC.Collect メソッド
強制的にガベージ コレクションを行います。
オーバーロードの一覧
すべてのジェネレーションのガベージ コレクションを強制的に実行します。
.NET Compact Framework でもサポート。
[Visual Basic] Overloads Public Shared Sub Collect()
[JScript] public static function Collect();
ジェネレーション 0 から指定ジェネレーションまでのガベージ コレクションを強制的に行います。
[Visual Basic] Overloads Public Shared Sub Collect(Integer)
[JScript] public static function Collect(int);
使用例
[Visual Basic, C#, C++] メモ ここでは、Collect のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。
Imports System
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 generation 2 only.
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
[C#]
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 generation 2 only.
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();
}
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
const long maxGarbage = 1000;
__gc 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 = new Version();
}
}
};
int main() {
MyGCCollectClass* myGCCol = new MyGCCollectClass();
// Determine the maximum number of generations the system
// garbage collector currently supports.
Console::WriteLine(S"The highest generation is {0}", __box(GC::MaxGeneration));
myGCCol->MakeSomeGarbage();
// Determine which generation myGCCol object is stored in.
Console::WriteLine(S"Generation: {0}", __box(GC::GetGeneration(myGCCol)));
// Determine the best available approximation of the number
// of bytes currently allocated in managed memory.
Console::WriteLine(S"Total Memory: {0}", __box(GC::GetTotalMemory(false)));
// Perform a collection of generation 0 only.
GC::Collect(0);
// Determine which generation myGCCol object is stored in.
Console::WriteLine(S"Generation: {0}", __box(GC::GetGeneration(myGCCol)));
Console::WriteLine(S"Total Memory: {0}", __box(GC::GetTotalMemory(false)));
// Perform a collection of generation 2 only.
GC::Collect(2);
// Determine which generation myGCCol object is stored in.
Console::WriteLine(S"Generation: {0}", __box(GC::GetGeneration(myGCCol)));
Console::WriteLine(S"Total Memory: {0}", __box(GC::GetTotalMemory(false)));
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
参照
GC クラス | GC メンバ | System 名前空間