2009-05-19 30 views

回答

5

託管代碼是虛擬機下運行的代碼由另一程序(C#例如),換句話說,它的存儲器被「管理」。

非託管代碼在底層架構上運行,無需虛擬機,但可能需要運行時庫。 (C例如)

進一步閱讀:http://en.wikipedia.org/wiki/Managed_code

哎呦,繼承人Duplicate

0

託管代碼由.NET運行時運行。因此CLR處理內存管理(又名垃圾收集)。託管的二進制文件位於IL代碼中。該代碼不直接被CPU理解,而是由CLR解釋爲CPU。任何具有CLR的環境都可以運行託管程序集。

非託管代碼只是定期編譯的代碼。 CPU直接理解的一系列ASM指令。運行速度更快,但支持框架更少,而且在出生時只限於一組可能運行的CPU。

0

有一天我聽到了一個相當不錯的故事。如果原來的人來了,看到這個,我會信任他。我不確定他是否會要我放棄他的名字。

非託管代碼: 想象一下一些真正扯平的戰士。他們有完全免費的統治。他們可以做任何他們想做的事,然後去任何他們需要的地方。唯一的問題是,他們在任何地方嘔吐。他們嘔吐整個地方,並將其拖入不應有的地方。這是C/C++等。

託管代碼: 這些傢伙是遠親。更精緻。但幾乎沒有那麼合適和意味。事實上,他們在體重方面略有下降。他們不允許跑到他們想要的地方。事實上,有一個邊界將他們留在他們的小玩具筆中。他們也是糞便,但他們是尿布,所以他們不會到處都是糞便。通常一個小傢伙來清理他們的尿布。這是Java。

大便顯然是記憶。邊界是虛擬機。小傢伙是垃圾收集者。

我只是不記得攜帶功能是如何進入這個故事。

+0

我也對隨便的評論說,.NET和MFC程序員可以在餐桌上區分開來,因爲MFC程序員不希望菜餚自己消失。 – Tormod 2009-05-19 08:55:17