成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深入概括VB.NET運(yùn)行環(huán)境

開發(fā) 后端
文章主要介紹了VB.NET運(yùn)行環(huán)境,CLR導(dǎo)致的體系,CLR垃圾回收器(CLR Garbage Collector),COM對(duì)象等等介紹,希望可以給你帶來幫助。

隨著時(shí)代的變化,信息成為我們不可缺少的一部分,在這發(fā)展中我們開發(fā)的語言也隨之成長,不管應(yīng)用是用VB、C#還是其他.NET語言編寫,所有VS.NET代碼都是編譯成中間語言(Intermediate Language,IL)。當(dāng)應(yīng)用運(yùn)行時(shí),一個(gè)實(shí)時(shí)編譯器(just-in-time compiler,或稱為JIT)就把IL代碼編譯成機(jī)器語言。在理論上,它意味著為非Windows的平臺(tái)構(gòu)造VB.NET運(yùn)行環(huán)境是可能的,但目前還沒有出現(xiàn)有關(guān)這類系統(tǒng)的正式消息。IL有一個(gè)缺點(diǎn):正如VB在5.0以前的版本,IL代碼對(duì)于類似的反向編譯工程很敏感。由于存在這種可能性,許多開發(fā)者對(duì)于.NET框架的整體安全性抱有懷疑。

對(duì)CLR進(jìn)行優(yōu)化影響IL層次上的代碼,它使得所有使用CLR的語言受益。然而,對(duì)于特定語言的優(yōu)化涉及到如何把代碼編譯成IL代碼,它根據(jù)特定語言的語法進(jìn)行。因此,.NET各種語言之間存在一定的性能差異是必然的。但不管如何,從整體上來看這仍舊是好事,例如CLR為VB帶來了和C#一樣的調(diào)試和分析工具——之所以能夠如此,是因?yàn)樗鼈兌际褂靡粯拥墓ぞ摺?

CLR提供了前所未有的跨語言集成能力,其中包括跨語言繼承代碼的能力。所有使用CLR的語言都使用一個(gè)公共類型系統(tǒng)(Common Type System),它使得開發(fā)那些運(yùn)用多種語言的應(yīng)用變得更為容易。在CLR之內(nèi)運(yùn)行的代碼稱為“受管理的代碼”(Managed Code),受管理代碼所使用的內(nèi)存由CLR全面控制。受管理的代碼有著許多優(yōu)點(diǎn),包括交叉語言集成、跨語言異常控制以及一個(gè)組件交互的簡化模型。VB.NET運(yùn)行環(huán)境只能以受管理代碼方式運(yùn)行,與此相對(duì)應(yīng),C#卻具有將代碼轉(zhuǎn)入非受管理方式運(yùn)行的能力(運(yùn)行在CLR之外),比如執(zhí)行指針處理之類的操作。這是VB.NET不能與C#相提并論的地方之一。然而,這種能力的是否重要,對(duì)于不同的人、不同的用途來說都有所不同。

由CLR導(dǎo)致的體系上的不同不僅僅是跨語言繼承、共享功能和受管理代碼,它還有更深刻的意義。Visual Studio.NET的底層體系不再是COM;另外,VB.NET運(yùn)行環(huán)境中所有東西都是對(duì)象,甚至連字符串也一樣。由于這些原因以及其他許多原因,Microsoft改變了底層體系管理對(duì)象的方法。COM系統(tǒng)通過引用計(jì)數(shù)方式管理對(duì)象,每當(dāng)對(duì)象被引用時(shí),引用計(jì)數(shù)就增加。當(dāng)對(duì)象引用超出作用范圍或者被釋放時(shí),計(jì)數(shù)器的值就減少;一旦引用計(jì)數(shù)為0,對(duì)象就被釋放。Microsoft聲稱.NET體系中的引用計(jì)數(shù)開銷實(shí)在太大,使得.NET采用引用計(jì)數(shù)不再合適,因此它就放棄了引用計(jì)數(shù),改用垃圾回收(Garbage Collection)。
大約40年前,John McCarthy設(shè)計(jì)了LISP語言,它是可考證的第一種編程語言。LISP運(yùn)行時(shí)不斷地分配和釋放大量的小塊內(nèi)存,由于那時(shí)的計(jì)算機(jī)內(nèi)存遠(yuǎn)遠(yuǎn)沒有現(xiàn)在這么龐大,因此早期的LISP用戶很快感到內(nèi)存不足,同時(shí)許多不再使用的內(nèi)存卻未能利用起來。為了解決這個(gè)問題,McCarthy于1959年第一次提出了垃圾回收的思想。
在一個(gè)真正面向?qū)ο蟮南到y(tǒng)中,垃圾回收機(jī)制能夠很好地滿足分配和釋放大量小塊內(nèi)存的需要。因此,Microsoft在VS.NET中重新實(shí)現(xiàn)了垃圾回收機(jī)制。

CLR垃圾回收器(CLR Garbage Collector)的主要任務(wù)就是監(jiān)視程序使用的資源,當(dāng)可用資源達(dá)到某個(gè)確定的極限時(shí)查找不再使用的對(duì)象,如發(fā)現(xiàn)有這類對(duì)象存在則釋放它們所占用的資源。垃圾回收的一個(gè)很大的優(yōu)點(diǎn)是程序員無需再為大多數(shù)常見的循環(huán)引用擔(dān)心。在循環(huán)引用情形下,子對(duì)象擁有對(duì)父對(duì)象的引用,同時(shí)父對(duì)象又擁有對(duì)子對(duì)象的引用。在引用計(jì)數(shù)模式下,循環(huán)引用阻止了系統(tǒng)釋放和拆除任意一個(gè)對(duì)象。然而,垃圾回收器能夠找出這類循環(huán)引用并拆除它們。垃圾回收機(jī)制同時(shí)也意味著,當(dāng)對(duì)象的最后一個(gè)引用被釋放時(shí),對(duì)象并不一定立即被拆除。

采用垃圾回收機(jī)制的一個(gè)后果是:我們不能再希望類的Terminate事件總是適時(shí)觸發(fā)。事實(shí)上,如果線程被阻塞的話,Terminate事件可能完全不會(huì)觸發(fā)。這就是所謂的“非確定的結(jié)束”(non-deterministic finalization),而COM提供的則是“確定的結(jié)束”。由于缺乏“確定的結(jié)束”,再加上因?yàn)槔厥掌髦匦陆M織和整理內(nèi)存導(dǎo)致不能運(yùn)用指針,新聞組中出現(xiàn)了對(duì)該問題激烈的爭論:有些人憎恨這些新的限制,因?yàn)樗麄円蕾囉凇按_定的結(jié)束”;有些人覺得無關(guān)緊要,因?yàn)樗麄儾⒉灰蕾囉赥erminate事件。

從引用計(jì)數(shù)轉(zhuǎn)變到垃圾回收僅僅是Visual Studio.NET底層體系不再是COM這一變化的諸多必然結(jié)果之一。雖然VB.NET之內(nèi)仍舊可以使用COM對(duì)象,但這些對(duì)象必須通過封裝(Wrapper)才能訪問。任何時(shí)候,封裝都意味著性能的降低,甚至還有可能導(dǎo)致對(duì)象行為的異常。如果要遷移一個(gè)大量使用COM對(duì)象的工程,你必須認(rèn)真地進(jìn)行計(jì)劃和測(cè)試,應(yīng)用程序的某些部分可能還需要重新構(gòu)造。

【編輯推薦】

  1. 用實(shí)例講述VB.NET Process類
  2. 簡單講述VB.NET表間拖放
  3. 五分鐘學(xué)會(huì)VB.NET實(shí)現(xiàn)拖放
  4. 講述VB.NET QuickSort函數(shù)
  5. 如何掌握強(qiáng)大的VB.NET ReadLine()方法
責(zé)任編輯:田樹 來源: 華軍軟件園
相關(guān)推薦

2009-10-29 16:23:42

VB.NET實(shí)現(xiàn)IEn

2009-10-14 14:04:29

VB.NET創(chuàng)建Web

2009-10-26 15:57:07

VB.NET使用Ora

2009-10-13 14:50:59

VB.NET Envi

2009-10-14 10:19:57

VB.NET Doma

2009-10-15 17:50:48

VB.NET Spli

2009-10-28 10:51:32

VB.NET默認(rèn)屬性

2009-11-03 10:00:20

VB.NET New方

2009-10-14 15:34:29

VB.NET窗體編程模

2009-10-14 13:15:09

VB.NET數(shù)據(jù)綁定

2009-10-14 16:46:25

VB.NET OnSt

2009-10-27 11:32:42

VB.NET Disp

2009-10-23 14:06:07

VB.NET類對(duì)象

2009-11-03 10:51:33

VB.NET共享

2009-11-02 09:21:04

VB.NET文件系統(tǒng)

2009-11-02 17:49:05

VB.NET抽象類

2009-10-28 14:44:43

VB.NET Name

2009-10-16 09:08:35

VB.NET獲取網(wǎng)卡地

2009-10-29 10:21:46

VB.NET變量適用范

2009-10-13 17:31:50

VB.NET Acce
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩成人影院 | 欧美一区免费 | 国产精品色婷婷久久58 | 成人性视频免费网站 | 九九精品在线 | 性精品| 91麻豆精品国产91久久久更新资源速度超快 | 亚洲国产精品一区二区www | 日韩视频在线观看 | 日韩精品在线观看视频 | 亚洲区一区二 | 精品国产一二三区 | 国产激情亚洲 | 午夜丁香视频在线观看 | av看片网站 | 人人看人人草 | 天天操天天操 | 精品久久久久久久久久久久久久久久久 | 欧美综合国产精品久久丁香 | 99久久婷婷国产综合精品首页 | 久草资源在线视频 | 国产精品久久久久久久久久尿 | 亚洲欧美在线观看 | 亚洲欧美中文日韩在线v日本 | 国产成人精品视频在线观看 | 国产精品国产a | 国产激情91久久精品导航 | 欧美一区二区久久 | 懂色av蜜桃av | 一级h片 | 成人网在线观看 | 91精品在线播放 | 国产一级在线观看 | 成人免费网站视频 | 日产久久 | 成人在线精品 | 国产一区二区三区久久久久久久久 | 亚洲人成人一区二区在线观看 | 九九精品网 | 久久国产免费看 | 免费黄色的视频 |