青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

COOOOOOOOL

從固有的原則出發,向著目標誠直前進.所以這樣的行為便名為正當的行為,表示其為尋著正路而行的.

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  26 Posts :: 0 Stories :: 21 Comments :: 0 Trackbacks

公告

QQ:774262464 email:cooooooool.2010@gmail.com

常用鏈接

留言簿(3)

我參與的團隊

搜索

  •  

積分與排名

  • 積分 - 73372
  • 排名 - 323

最新評論

閱讀排行榜

評論排行榜

第二章 理論基礎-公用語言 運行環境

既然你已經具有了C#全面的印象,我也想讓你了解NGWS runtime的全貌。C#依靠由NGWS提供的運行時;因此,有必要知道運行時如何工作,以及它背后所蘊含的概念。
所以,這一章分為兩部分——它們是所有的概念和使用的基礎。兩部分的內容雖然有些重疊,但它有助于加深理解正在學習的概念。

2.1 NGWS Runtime

NGWS和NGWS Runtime為你提供了一種運行時環境。該運行時管理執行代碼,并提供了使編程更容易的服務。只要你的編譯器支持這種運行時,你就會從這種受管理的執行環境中得益。

你猜測C#編譯器支持NGWS runtime很正確,但是不僅它支持NGWS runtime,VB和C++也支持。這些為支持運行時所創建的代碼稱作"受管代碼"(managed code)。以下是你的應用程序從NGWS runtime那里所得到的利益:

交叉語言集成(通過通用語言規范)
自動內存管理(垃圾收集)
交叉語言異常處理(統一展開)
增強安全(包括類型安全)
版本支持("DLL地獄"終結者)
組件交互簡化模式

因NGWS runtime 要提供了所有的這些好處,編譯器必須把元文件和受管代碼一起發出。元文件描述代碼中的類型,它和你的代碼存在一起(與PE類似---PE為可變位執行文件)

正如你從很多種交叉語言功能所看到的,NGWS runtime主要是關于高度集成交叉多異編程語言(tight integration across multiple different programming languages)。這種支持可達到允許你從一個VB對象派生出一個C#類的程度(我后面會給出要討論的文章)。

C#程序員將會喜歡的一個功能是,他們不必擔心內存管理—也就是說不必擔心臭名昭著的內存泄漏。NGWS runtime提供了內存管理,當對象和變量的生命期結束(不再被引用)時,垃圾收集器釋放它們。我真的喜歡這個功能,因為在COM中的內存管理一直是我的一塊心病。

應該鼓勵配置一個管理應用程序或者組件。因為管理應用程序含有元數據文件,NGWS runtime可以利用這些信息,以確保你的應用程序具有它所需的各種規定版本。所產生的明顯效果為,由于你的代碼沒有相互之間的依賴,很少可能出現中斷。

這章余下來的將分為兩部分,每一部分討論NGWS runtime的各個方面,直到你的C#應用程序能執行為止。
1、中間語言(Intermediate Language,縮寫IL)和元數據
2、即時編譯器(just-in-time compliers,簡稱JITers)

2.1.1 中間語言和元數據

由C#編譯器生成的受管代碼并不是原始代碼,但它是中間語言(IL)代碼。這種IL代碼自身變成了NGWS runtime的受管執行進程的入口。IL代碼明顯的優勢在于它是CPU無關的,這也意味著,你要用目標機器上的一個編譯器才能把IL代碼轉換成原始代碼。

盡管IL代碼由編譯器產生,但它并不是編譯器提供給運行時僅有的東西。編譯器同樣產生有關你代碼的元數據,它告訴運行時有關你代碼的更多的東西,例 如各種類型的定義、各種類型成員的簽名以及其它數據。基本上,元數據是類型庫、注冊表內容和其它用于COM的信息。盡管如此,元數據還是直接和執行代碼合 并在一起,并不處在隔離的位置。
IL和元數據存放于擴展了PE格式的文件中(PE格式用于.exe和.dll文件)。當這樣的一個PE文件被裝載時,運行時從文件中定位和分離出元數據和IL。

在進一步說明之前,我想給你已有的IL指令的簡短目錄。盡管它不是一個完整的清單,也不需要你熟記和理解,但是它列出了你所必需的、C#程序所基于的知識基礎。

算術和邏輯操作符
控制流
直接內存訪問
堆棧操作
參數和局部變量
堆棧分配
對象模式
實例類型值
臨界區
數組
分型位置
即時編譯器(JITters)
2.1.2 即時編譯器(JITters)

由C#或其它能產生受管代碼的編譯器所生成的受管代碼就是IL碼。雖然IL代碼被包裝在一個有效的PE文件中,但是你還是不能執行它,除非它被轉換成為受管原始代碼。這就是NGWS runtime 即時編譯器(也稱作JITters)大顯身手的時候。
為什么你會對即時編譯代碼感到厭繁, 為什么不把整個IL PE文件編譯成原始代碼? 答案是時間——需要把IL代碼編譯成CPU規格的代碼的時間。這種編譯將更加有效率,因為一些程序段從來就沒有被執行過。例如,在我的字處理器中,郵件合并功能從來就沒有被編譯。

 

從技術上說,全部的處理過程如下:當一個類型被裝載時,裝載器創建一個存根(stub),并使它連接每一個類型的方法。當一個方法第一次被調用時, 存根把控制交給JIT。JIT把IL編譯為原始代碼,且把存根指針指向緩沖了的原始代碼。接著的調用將執行原始碼。在某些位置上(At some point),所有的IL都被轉換成為原始代碼,而JITter處于空閑狀態。

正如我在前面提到的,JIT編譯器有很多,不止一個。在Windows平臺上,NGWS runtime裝有3個不同的JIT編譯器。

JIT——這是NGWS runtime默認使用的JIT編譯器。它是一個后臺(back end)優化的編譯器 ,在前臺(up front)實行數據流分析,并創建了高度優化的受管原始代碼做為輸出結果。JIT可以使用不嚴格的IL指令集編碼,但是所需資源將十分可觀。主要的限制 在于內存足跡(footprint)、結果工作集,以及實行優化所消耗的時間。

EconoJIT—— 和主JIT相比,EconJIT的目標是把IL高速地轉換成受管原始代碼。它允許緩沖所產生的原始代碼,但是輸出碼并不象主JIT生成的代碼那樣優化(代 碼小)。當內存緊張時,快速代碼生成方案的優勢將蕩然無存。通過永久地拋棄無用的已JIT過的代碼,你可以把更大的IL程序裝入代碼緩沖區。因為JIT編 譯快,執行速度也仍然很快。

PreJIT—盡管它是基于主JIT的,但操作起來更象是一個傳 統的編譯器。你安裝了NGWS組件,它才能運行,才可以把IL代碼編譯成受管原始代碼。當然最終的結果為,更快的裝載時間和更快的應用程序啟動時間(不需要更多的JIT編譯)。

在所列出的JITters中,有兩個是運行時的JITters。可是你怎么決定要使用哪一個JIT,它如何使用內存? 有一個稱做"JIT編譯管理器"的小應用程序(jitman.exe),它存放于NGWS SDK安裝目錄下的bin目錄中。

盡管它是一個小小的對話框,可是你所選擇的選項功能是相當強大的。每一個選項將在以下描述。

Use EconoJIT only 選項——當該復選框沒有選上時,NGWS runtime使用默認的正常的JIT編譯器。前面就曾經解釋過兩種JITter的區別。

Max Code Pitch Overhead(%)選項——該設置僅保留給EconoJIT。它控制了JIT編譯時間和執行代碼時間的百分比。如果超過了設定的域值,代碼緩沖區得到擴充,以縮短JIT編譯所消耗的時間。

Limit Size of Code Cache選項——該項默認為非選。沒有選擇該項意味著緩沖區將使用它所能得到的內存。如果你想限制緩沖區大小,復選該選項,這將允許你使用Max Size of Cache(bytes)選項。

Max Size of Cache(bytes)選項—控制容納JIT代碼的緩沖區的最大值。雖然你可以非常嚴格地限制這個值,但你還是應該小心,不能超過這個緩沖區所適合的最大值。否則該方法的JIT編譯將會失敗。

Optimize For Size選項——告訴JIT 編譯器,優化的目的是為了使代碼更小而不是能執行得更快。這個設置默認是關掉的。

Enable Concurrent GC[garbage collection]選 項——垃圾收集(GC)默認地運行在用戶代碼的線程中。意味GC發生時,可能會注意到回應有輕微的延遲。為防止出現該現象,打開當前GC。注意,當前GC 比標準GC更慢,它僅在windows 2000上寫時(the time of writing)有效。

當用C#創建項目時,你可能使用不同的設置試驗過。當創建 UI-intensive應用程序時,你將會看到允許當前GC的最大差別。

2.2 虛擬對象系統(VOS)

到目前為止,你僅看到了NGWS runtime如何工作,但是并不了解它工作的技術背景以及為什么它要這樣工作。這節都是關于 NGWS 虛擬對象系統的(VOS)。

以下為在VOS中形成聲明、使用和管理類型模型時,NGWS runtime的規則。在VOS背后的思想是建立一個框架,在執行代碼時不能犧牲性能,允許交叉語言集成和類型安全。

我提到的框架是運行時架構的基礎。為了幫助你更好地了解它,我將它勾出四個區域。當開發C#應用程序和組件時,理解它們很重要。

VOS類型系統——提供豐富的類型系統,它打算支持全面編程語言的完全實施。
元數據——描述和引用VOS類型系統所定義的類型。元數據的永久格式與編程語言無關,但是,元數據拿自己當作一種互換機制(nterchange mechanism)來使用,這種互換是在在工具和NGWS的虛擬執行系統之間。

posted on 2009-12-15 21:10 COOOOOOOOL 閱讀(186) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99精品欧美一区| 性娇小13――14欧美| 欧美承认网站| 日韩一区二区福利| 最新69国产成人精品视频免费| 久久er精品视频| **性色生活片久久毛片| 欧美黄色aaaa| 欧美午夜精品久久久久久孕妇| 亚洲嫩草精品久久| 欧美一区二区视频在线| 1024国产精品| 一区二区日韩欧美| 国产欧美一区二区精品性| 老**午夜毛片一区二区三区| 免费视频久久| 午夜精品免费| 久久亚洲电影| 亚洲欧美国产视频| 欧美在线啊v| 一本一本久久| 欧美综合77777色婷婷| 亚洲精品网址在线观看| 亚洲天堂av高清| 亚洲电影欧美电影有声小说| 亚洲美女尤物影院| 激情欧美一区二区三区| 亚洲精品国产精品国自产观看| 国产伦精品一区二区三区四区免费 | 亚洲美女色禁图| 国产精品系列在线播放| 嫩草成人www欧美| 国产精品久久久久久五月尺| 蜜桃视频一区| 国产精品久久久久久久电影| 麻豆成人91精品二区三区| 欧美日韩一区二区欧美激情| 久久国产精品黑丝| 欧美图区在线视频| 欧美激情网站在线观看| 国产三级精品在线不卡| 99国产精品国产精品久久| 狠狠色综合网| 亚洲欧美日韩国产成人| 一区二区三区欧美在线观看| 久久久久久久综合狠狠综合| 亚洲欧美成人在线| 欧美精品乱人伦久久久久久| 老牛影视一区二区三区| 国产精品久在线观看| 亚洲激情视频网站| 亚洲激情成人在线| 久久精品一区二区三区不卡| 欧美一区二区三区久久精品| 欧美精品亚洲二区| 亚洲韩国日本中文字幕| 亚洲国产精品v| 久久久久国产精品一区二区| 欧美一区二区精品在线| 国产精品久久二区二区| 一本一道久久综合狠狠老精东影业| 在线看日韩av| 久久天堂av综合合色| 玖玖玖免费嫩草在线影院一区| 国产精品久久久久免费a∨| 亚洲美女av电影| 日韩一级大片| 欧美日韩在线视频观看| 亚洲精品乱码久久久久久日本蜜臀| 亚洲大片在线| 免费人成网站在线观看欧美高清| 久久另类ts人妖一区二区| 国产婷婷色一区二区三区在线| 亚洲免费在线看| 欧美在线免费观看视频| 国产日本欧美一区二区三区在线| 亚洲综合视频网| 欧美一级免费视频| 国内精品嫩模av私拍在线观看 | 亚洲国产成人久久综合| 亚洲成色最大综合在线| 免费亚洲视频| 99视频+国产日韩欧美| 亚洲午夜一区二区| 国产午夜精品理论片a级大结局| 亚洲综合色视频| 美女图片一区二区| 亚洲国产精品尤物yw在线观看| 欧美sm视频| 亚洲深夜福利视频| 久久久av水蜜桃| 亚洲国产成人久久综合| 欧美精品一区三区| 亚洲在线网站| 欧美激情第10页| 亚洲一区二区欧美| 国产日产高清欧美一区二区三区| 久久精品一本久久99精品| 亚洲国产精品v| 亚洲欧美日韩精品一区二区| 国产三区精品| 欧美精品一线| 欧美专区亚洲专区| 亚洲精选视频免费看| 欧美在线观看视频| 亚洲精品美女91| 国产一区二区三区免费观看 | 亚洲综合导航| 亚洲国产成人av在线| 亚洲欧美视频一区| 最近看过的日韩成人| 国产精品久久久久91| 免费亚洲一区二区| 午夜精品久久久久久久男人的天堂 | 国产综合激情| 国产精品国产三级国产专播精品人 | 亚洲麻豆一区| 男女av一区三区二区色多| 亚洲午夜在线观看视频在线| 在线观看日韩av先锋影音电影院| 欧美调教视频| 欧美精品一区二区久久婷婷| 久久超碰97人人做人人爱| 亚洲欧洲在线免费| 免费成人激情视频| 久久超碰97人人做人人爱| 一区二区三区精品久久久| 亚洲二区在线视频| 精品盗摄一区二区三区| 国产精品自在线| 国产精品高潮在线| 欧美日韩性生活视频| 男同欧美伦乱| 蜜臀久久久99精品久久久久久| 久久国产高清| 欧美在线观看一区二区| 午夜精品在线看| 亚洲欧美日韩另类精品一区二区三区 | 亚洲电影av| 在线观看福利一区| 国内久久婷婷综合| 国产亚洲精品v| 国产一区二区无遮挡| 国产欧美韩日| 国产视频自拍一区| 韩国av一区二区三区四区| 国产一区二区精品丝袜| 国产亚洲免费的视频看| 国产日产高清欧美一区二区三区| 国产精品久久二区二区| 国产精品久久一区二区三区| 国产精品久久久久秋霞鲁丝| 国产精品视频网| 国产自产2019最新不卡| 樱桃成人精品视频在线播放| 亚洲成人在线免费| 亚洲日本免费| 亚洲午夜激情网站| 欧美一区二区三区四区视频| 欧美在线观看视频一区二区| 久久精品国产在热久久| 久久综合伊人77777| 欧美成人久久| 亚洲美女av网站| 亚洲男同1069视频| 久久久久久久久久久一区| 男女激情久久| 国产精品久久久久久久7电影| 国产美女扒开尿口久久久| 一区二区亚洲欧洲国产日韩| 亚洲日本精品国产第一区| 亚洲资源av| 老司机一区二区| 日韩一级在线| 欧美在线影院在线视频| 免费在线成人| 国产乱子伦一区二区三区国色天香| 国产视频久久网| 99re6热在线精品视频播放速度| 亚洲一区网站| 欧美成人69av| 亚洲一区影音先锋| 久久综合狠狠综合久久综合88 | 欧美日韩午夜在线| 国产一区二区三区高清播放| 亚洲国产一区在线| 性欧美8khd高清极品| 欧美黄色大片网站| 亚洲免费中文| 欧美另类在线播放| 一区视频在线播放| 午夜精品偷拍| 亚洲精品久久久久久久久久久久久| 小黄鸭精品aⅴ导航网站入口| 欧美成人精品一区二区| 国产亚洲欧美aaaa| 亚洲中午字幕| 亚洲精品影院| 欧美成人午夜剧场免费观看| 国产日韩精品视频一区|