提十個有趣的關于.Net CLR,GC的PopQuiz
近日研究CLR和GC,在msdn blog上面看到MS CLR測試小組的一個女技術員提出了十幾個問題,感覺問題都挺有趣,也有一定的難度,遂加以修改,刪除了幾個又添加了幾個,廣泛征集回答 ^_^
1. 一個托管進程,如果運行在一個雙核CPU的機器上,GC是運行于Server GC模式,在假設CPU沒有Hyper thread功能的話,這個托管進程會有幾個GC Thread?可以用調試工具來證明你的判斷嗎?
2. 在一個多核的服務器上,如果運行一個winform app程序,這個程序對實時響應的要求比較高,應該使用哪種GC模式?為什么?(可以選擇Server GC,Workstation GC,Concurrent-Workstation)
3. 在什么情況或者什么操作下,會進行一次垃圾回收?
4. 什么使一個Object從Generation 0移動到Gen 1,或者是從Gen 1到Gen 2?Pinned Objects呢?
5. 如果一臺機器是四核CPU,在運行Server mode的GC和Workstation Mode的GC的時候,分別有多少個GC Heap?
6. 在Dotnet Framework 2.0下,如果發現一個進程里面加載了mscorwks.dll,那么可以因此判定這個線程是運行在Workstation Mode的GC下面?
7. 可以手工的改變一個進程的GC運行模式嗎?在什么樣的情況下如何修改?
8. 為什么要在打開一個數據庫連接時候用完了就關閉這個連接?GC不會給我們處理這些事情么?
9. Strong References,Weak Reference,Pinned Reference有什么區別?
10. 在Large Object Heap中,所有的大對象是沒有經過篩選順序堆放在一起的嗎?
也沒有真正的標準答案,回答的有理有據就對。
如果大部分的問題對于你來說都是小case,那么趕緊告訴我你的msn吧,俺這里還有一大票Puzzling Question Queue…..
posted on 2008-02-29 09:58 lbq1221119 閱讀(3874) 評論(14) 收藏 舉報
浙公網安備 33010602011771號