首頁 - 網(wǎng)校 - 萬題庫 - 美好明天 - 直播 - 導(dǎo)航

2018年計(jì)算機(jī)軟考《系統(tǒng)架構(gòu)設(shè)計(jì)師》復(fù)習(xí)資料(4)

來源:考試吧 2018-01-05 11:57:34 要考試,上考試吧! 萬題庫
“2018年計(jì)算機(jī)軟考《系統(tǒng)架構(gòu)設(shè)計(jì)師》復(fù)習(xí)資料(4)”供考生參考。更多軟件水平考試內(nèi)容請(qǐng)?jiān)L問考試吧軟件水平考試網(wǎng)。

  點(diǎn)擊查看:2018計(jì)算機(jī)軟考《系統(tǒng)架構(gòu)設(shè)計(jì)師》復(fù)習(xí)資料匯總

  管理可用資源

  公共語言運(yùn)行庫 (CLR) 使用垃圾回收器來管理對(duì)象生存期和內(nèi)存使用。這意味著無法再訪問的對(duì)象將被垃圾回收器自動(dòng)回收,并且自動(dòng)回收內(nèi)存。由于多種原因無法再訪問對(duì)象。例如,可 能沒有對(duì)該對(duì)象的任何引用,或者對(duì)該對(duì)象的所有引用可能來自其他可作為當(dāng)前回收周期的一部分進(jìn)行回收的對(duì)象。盡管自動(dòng)垃圾回收使您的代碼不必負(fù)責(zé)管理對(duì)象 刪除,但這意味著您的代碼不再對(duì)對(duì)象的確切刪除時(shí)間具有顯式控制。請(qǐng)考慮下列原則,以確保您能夠有效地管理可用資源:

  1)確保在被調(diào)用方對(duì)象提供 Dispose 方法時(shí)該方法得到調(diào)用。如果您的代碼調(diào)用了支持Dispose 方法的對(duì)象,則您應(yīng)該確保在使用完該對(duì)象之后立即調(diào)用此方法。調(diào)用 Dispose 方法可以確保搶先釋放非托管資源,而不是等到發(fā)生垃圾回收。除了提供 Dispose 方法以外,某些對(duì)象還提供其他管理資源的方法,例如,Close 方法。在這些情況下,您應(yīng)該參考文檔資料以了解如何使用其他方法。例如,對(duì)于 SqlConnection 對(duì)象而言,調(diào)用 Close 或 Dispose 都足可以搶先將數(shù)據(jù)庫連接釋放回連接池中。一種可以確保您在對(duì)象使用完畢之后立即調(diào)用 Dispose 的方法是使用 Visual C# .NET 中的 using 語句或 Visual Basic .NET 中的Try/Finally 塊。 下面的代碼片段演示了 Dispose 的用法。

  C# 中的 using 語句示例:

  using( StreamReader myFile = new StreamReader("C:\\ReadMe.Txt")){

  string contents = myFile.ReadToEnd();

  //... use the contents of the file

  } // dispose is called and the StreamReader’s resources released

  Visual Basic .NET 中的 Try/Finally 塊示例:

  Dim myFile As StreamReader

  myFile = New StreamReader("C:\\ReadMe.Txt")

  Try

  String contents = myFile.ReadToEnd()

  ’... use the contents of the file

  Finally

  myFile.Close()

  End Try  注:在 C# 和 C++ 中,F(xiàn)inalize 方法是作為析構(gòu)函數(shù)實(shí)現(xiàn)的。在 Visual Basic .NET 中,F(xiàn)inalize 方法是作為 Object 基類上的 Finalize 子例程的重寫實(shí)現(xiàn)的。

  2)如果您在客戶端調(diào)用過程中占據(jù)非托管資源,則請(qǐng)?zhí)峁?Finalize 和 Dispose 方法。如果您在公共或受保護(hù)的方法調(diào)用中創(chuàng)建訪問非托管資源的對(duì)象,則應(yīng)用程序需要控制非托管資源的生存期。在圖 8.1 中,第一種情況是對(duì)非托管資源的調(diào)用,在此將打開、獲取和關(guān)閉資源。在此情況下,您的對(duì)象無須提供 Finalize 和 Dispose 方法。在第二種情況下,在方法調(diào)用過程中占據(jù)非托管資源;因此,您的對(duì)象應(yīng)該提供 Finalize 和 Dispose 方法,以便客戶端在使用完該對(duì)象后可以立即顯式釋放資源。

  垃圾回收通常有利于提高總體性能,因?yàn)樗鼘⑺俣鹊闹匾灾糜趦?nèi)存利用率之上。只有當(dāng)內(nèi)存資源不足時(shí),才需要?jiǎng)h除對(duì)象;否則,將使用所有可用的應(yīng)用程序資源以 使您的應(yīng)用程序受益。但是,如果您的對(duì)象保持對(duì)非托管資源(例如,窗口句柄、文件、GDI 對(duì)象和網(wǎng)絡(luò)連接)的引用,則程序員通過在這些資源不再使用時(shí)顯式釋放它們可以獲得更好的性能。如果您要在客戶端方法調(diào)用過程中占據(jù)非托管資源,則對(duì)象應(yīng)該 允許調(diào)用方使用IDisposable 接口(它提供 Dispose 方法)顯式管理資源。通過實(shí)現(xiàn) IDisposable,對(duì)象將通知它可被要求明確進(jìn)行清理,而不是等待垃圾回收。實(shí)現(xiàn) IDisposable 的對(duì)象的調(diào)用方在使用完該對(duì)象后將簡(jiǎn)單地調(diào)用 Dispose 方法,以便它可以根據(jù)需要釋放資源。注如果您的可處置對(duì)象派生自另一個(gè)也實(shí)現(xiàn)了 IDisposable 接口的對(duì)象,則您應(yīng)該調(diào)用基類的 Dispose 方法以使其可以清理它的資源。您還應(yīng)該調(diào)用實(shí)現(xiàn)了 IDisposable 接口的對(duì)象所擁有的所有對(duì)象上的 Dispose。Finalize 方法也使您的對(duì)象可以在刪除時(shí)顯式釋放其引用的任何資源。由于垃圾回收器所具有的非確定性,在某些情況下,F(xiàn)inalize 方法可能長(zhǎng)時(shí)間不會(huì)被調(diào)用。實(shí)際上,如果您的應(yīng)用程序在垃圾回收器刪除對(duì)象之前終止,則該方法可能永遠(yuǎn)不會(huì)被調(diào)用。然而,需要使用Finalize 方法作為一種后備策略,以防調(diào)用方?jīng)]有顯式調(diào)用 Dispose 方法(Dispose 和 Finalize 方法共享相同的資源清理代碼)。通過這種方式,可能在某個(gè)時(shí)刻釋放資源,即使這發(fā)生在最佳時(shí)刻之后。注要確保 Dispose 和 Finalize 中的清理代碼不會(huì)被調(diào)用兩次,您應(yīng)該調(diào)用GC.SuppressFinalize 以通知垃圾回收器不要調(diào)用 Finalize 方法。垃圾回收器實(shí)現(xiàn)了 Collect 方法,該方法強(qiáng)制垃圾回收器刪除所有對(duì)象掛起刪除。不應(yīng)該從應(yīng)用程序內(nèi)調(diào)用該方法,因?yàn)榛厥罩芷谠诟邇?yōu)先級(jí)線程上運(yùn)行;厥罩芷诳赡軆鼋Y(jié)所有 UI 線程,從而使得用戶界面停止響應(yīng)。

  相關(guān)推薦:

  2018年軟考報(bào)名時(shí)間2018軟考考試安排(全年)

  考試吧特別策劃:2018年計(jì)算機(jī)軟考報(bào)考指南專題熱點(diǎn)文章

  計(jì)算機(jī)軟件水平考試各科目精選試題匯總

  2018年計(jì)算機(jī)軟件水平考試各科目復(fù)習(xí)知識(shí)點(diǎn)匯總

  軟考報(bào)考條件軟考報(bào)名方法考試大綱科目

  歷年軟考真題及答案匯總軟件水平考試簡(jiǎn)介

0
收藏該文章
0
收藏該文章
文章搜索
·精選試題 ·智能練習(xí)
·智能評(píng)估 ·視頻解析
掃描二維碼下載
  • 初級(jí)職稱
  • 中級(jí)職稱
  • 高級(jí)職稱

版權(quán)聲明:如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
Copyright © 2004- 考試吧軟件水平考試網(wǎng) 出版物經(jīng)營(yíng)許可證新出發(fā)京批字第直170033號(hào) 
京ICP證060677 京ICP備05005269號(hào) 中國(guó)科學(xué)院研究生院權(quán)威支持(北京)
在線模擬試題
考證通關(guān)殺器
考試最新資訊
學(xué)
一次通關(guān)技巧