Odśmiecacz nie jest aktywnym systemem. Działa „czasami” i głównie na żądanie (na przykład, gdy wszystkie strony oferowane przez system operacyjny są pełne).
Większość odśmiecaczy działa w wątku podobnym do pierwszej generacji. W większości przypadków może minąć kilka godzin, zanim obiekt zostanie poddany recyklingowi.
Jedyny problem występuje, gdy chcesz zakończyć program. Jednak to nie jest problem. Podczas korzystania kill
z systemu operacyjnego poprosimy grzecznie o zakończenie procesów. Kiedy jednak proces pozostaje aktywny, można użyć kill -9
miejsca, w którym system operacyjny usuwa całą kontrolę.
Kiedy uruchomiłem Twój kod w csharp
środowisku interaktywnym , otrzymałem:
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
W ten sposób program ulega awarii, ponieważ stdout
jest blokowany przez zamknięcie środowiska.
Podczas usuwania Console.WriteLine
i zabijania programu. Po pięciu sekundach program się kończy (innymi słowy, garbage collector poddaje się i po prostu zwalnia całą pamięć bez uwzględnienia finalizatorów).