가비지 수집기는 활성 시스템이 아닙니다. 그것은 "때때로"그리고 대부분 수요에 따라 실행됩니다 (예 : OS에서 제공하는 모든 페이지가 가득 찬 경우).
대부분의 가비지 수집기는 하위 스레드에서 1 세대와 유사한 방식으로 실행됩니다. 대부분의 경우 개체를 재활용하는 데 몇 시간이 걸릴 수 있습니다.
프로그램을 종료하려는 경우에만 문제가 발생합니다. 그러나 그것은 실제로 문제가 아닙니다. killOS 를 사용할 때 정중하게 프로세스를 종료하도록 요청합니다. 그러나 프로세스가 활성 상태로 유지 kill -9되면 운영 체제가 모든 제어를 제거 하는 곳에서 사용할 수 있습니다 .
대화 형 csharp환경 에서 코드를 실행했을 때 다음과 같은 결과 가 있습니다.
csharp>
1
2
Unhandled Exception:
System.NotSupportedException: Stream does not support writing
at System.IO.FileStream.Write (System.Byte[] array, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.StreamWriter.FlushBytes () [0x00000] in <filename unknown>:0
at System.IO.StreamWriter.FlushCore () [0x00000] in <filename unknown>:0
at System.IO.StreamWriter.Write (System.Char[] buffer, Int32 index, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.CStreamWriter.Write (System.Char[] buffer, Int32 index, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.CStreamWriter.Write (System.Char[] val) [0x00000] in <filename unknown>:0
at System.IO.CStreamWriter.Write (System.String val) [0x00000] in <filename unknown>:0
at System.IO.TextWriter.Write (Int32 value) [0x00000] in <filename unknown>:0
at System.IO.TextWriter.WriteLine (Int32 value) [0x00000] in <filename unknown>:0
at System.IO.SynchronizedWriter.WriteLine (Int32 value) [0x00000] in <filename unknown>:0
at System.Console.WriteLine (Int32 value) [0x00000] in <filename unknown>:0
at P.Finalize () [0x00000] in <filename unknown>:0
따라서 프로그램 stdout은 환경 용어에 의해 차단 되기 때문에 충돌 합니다.
Console.WriteLine프로그램을 제거 하고 죽일 때 . 5 초 후에 프로그램이 종료됩니다 (즉, 가비지 수집기가 포기하고 종료자를 고려하지 않고 모든 메모리를 해제합니다).