首頁(yè) - 網(wǎng)校 - 萬(wàn)題庫 - 美好明天 - 直播 - 導航
您現在的位置: 考試吧 > 軟件水平考試 > 復習資料 > 系統架構設計師 > 正文

2018年計算機軟考《系統架構設計師》復習資料(4)

來(lái)源:考試吧 2018-01-05 11:57:34 要考試,上考試吧! 萬(wàn)題庫
“2018年計算機軟考《系統架構設計師》復習資料(4)”供考生參考。更多軟件水平考試內容請訪(fǎng)問(wèn)考試吧軟件水平考試網(wǎng)。

  點(diǎn)擊查看:2018計算機軟考《系統架構設計師》復習資料匯總

  管理可用資源

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

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

  C# 中的 using 語(yǔ)句示例:

  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++ 中,Finalize 方法是作為析構函數實(shí)現的。在 Visual Basic .NET 中,Finalize 方法是作為 Object 基類(lèi)上的 Finalize 子例程的重寫(xiě)實(shí)現的。

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

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

  相關(guān)推薦:

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

  考試吧特別策劃:2018年計算機軟考報考指南專(zhuān)題熱點(diǎn)文章

  計算機軟件水平考試各科目精選試題匯總

  2018年計算機軟件水平考試各科目復習知識點(diǎn)匯總

  軟考報考條件軟考報名方法考試大綱科目

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

文章搜索
·精選試題 ·智能練習
·智能評估 ·視頻解析
掃描二維碼下載
  • 初級職稱(chēng)
  • 中級職稱(chēng)
  • 高級職稱(chēng)

版權聲明:如果軟件水平考試網(wǎng)所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會(huì )及時(shí)處理。如轉載本軟件水平考試網(wǎng)內容,請注明出處。
Copyright © 2004- 考試吧軟件水平考試網(wǎng) 出版物經(jīng)營(yíng)許可證新出發(fā)京批字第直170033號 
京ICP證060677 京ICP備05005269號 中國科學(xué)院研究生院權威支持(北京)
在線(xiàn)模擬試題
考證通關(guān)殺器
考試最新資訊
學(xué)
一次通關(guān)技巧
午夜夜伦鲁鲁片免费无码_亚洲国产男人本色在线观看的a站_国产极品粉嫩馒头一线天免费_亚洲А∨天堂2021无码