最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

PFTL101B 20KN 3BSE004203R1

2023-09-01 11:01 作者:小賴總-17750010683  | 我要投稿

PFTL101B 20KN 3BSE004203R1

雖然當(dāng)今的嵌入式系統(tǒng)的內(nèi)存比之以K計(jì)數(shù)的時(shí)代已經(jīng)有了很大的提高,但是隨著軟件規(guī)模的增長(zhǎng),內(nèi)存不足的問(wèn)題依然時(shí)時(shí)困擾著系統(tǒng)架構(gòu)師。有一些原則,架構(gòu)師在進(jìn)行設(shè)計(jì)決策的時(shí)候可以參考:

2.3.1. 虛擬內(nèi)存技術(shù)

有一些嵌入式設(shè)備需要處理巨大的數(shù)據(jù)量,而這些數(shù)據(jù)不可能全部裝入內(nèi)存中。一些嵌入式操作系統(tǒng)不提供虛擬內(nèi)存技術(shù),比如WinCE4.2每個(gè)程序最多只能使用32M內(nèi)存。對(duì)這樣的應(yīng)用,架構(gòu)師應(yīng)該特別設(shè)計(jì)自己的虛擬內(nèi)存技術(shù)。所謂的虛擬內(nèi)存技術(shù)的核心是,將暫時(shí)不太可能使用的數(shù)據(jù)移出內(nèi)存。這涉及到一些技術(shù)點(diǎn):

  1. 引用計(jì)數(shù),正在使用的數(shù)據(jù)不能移出。

  2. 使用預(yù)測(cè),預(yù)測(cè)下一個(gè)階段某個(gè)數(shù)據(jù)的使用可能性。基于預(yù)測(cè)移出數(shù)據(jù)或者提前裝入數(shù)據(jù)。

  3. 占位數(shù)據(jù)/對(duì)象。

  4. 高速緩存。在復(fù)雜數(shù)據(jù)結(jié)果下緩存高頻率使用的數(shù)據(jù),直接訪問(wèn)。

  5. 快速的持久化和裝載。

下圖是一個(gè)全國(guó)電信機(jī)房管理系統(tǒng)的界面示意圖:

每個(gè)節(jié)點(diǎn)下都有大量的數(shù)據(jù)需要裝載,可以使用上述技術(shù)將內(nèi)存占用降到最低。

2.3.2. 兩段式構(gòu)造

在內(nèi)存有限的系統(tǒng)里,對(duì)象構(gòu)造失敗是必須要處理的問(wèn)題,失敗的原因中最常見(jiàn)的則是內(nèi)存不足(實(shí)際上這也是對(duì)PC平臺(tái)的要求,但是在實(shí)際中往往忽略,因?yàn)閮?nèi)存實(shí)在便宜)。兩段式構(gòu)造就是一種常用而有效的設(shè)計(jì)。舉例來(lái)說(shuō):

CMySimpleClass:
class CMySimpleClass
{
?public:
?CMySimpleClass();
?~CMySimpleClass();
?...
?private:
?int SomeData;
};
CMyCompoundClass:
class CMyCompoundClass
{
?public:
?CMyCompoundClass();
?~CMyCompoundClass();
?...
?private:
?CMySimpleClass* iSimpleClass;
};
在CMyCompoundClass的構(gòu)造函數(shù)里初始化iSimpleClass對(duì)象。

CMyCompoundClass::CMyCompoundClass()
{
?iSimpleClass = new CMySimpleClass;
}

當(dāng)創(chuàng)建CMyCompoundClass的時(shí)候會(huì)發(fā)生什么呢?

CMyCompoundClass* myCompoundClass = new CMyCompoundClass;

  1. 為CMyCompoundClass的對(duì)象分配內(nèi)存

  2. 調(diào)用CMyCompoundClass對(duì)象的構(gòu)造函數(shù)

  3. 在構(gòu)造函數(shù)中創(chuàng)建一個(gè)CMySimpleClass的實(shí)例

  4. 構(gòu)造函數(shù)結(jié)束返回

一切看起來(lái)都很簡(jiǎn)單,但是如果第三步創(chuàng)建CMySimpleClass對(duì)象的時(shí)候發(fā)生內(nèi)存不足的錯(cuò)誤怎么辦呢?構(gòu)造函數(shù)無(wú)法返回任何錯(cuò)誤信息以提示調(diào)用者構(gòu)造沒(méi)有成功。調(diào)用者于是獲得了一個(gè)指向CMyCompoundClass的指針,但是這個(gè)對(duì)象并沒(méi)有構(gòu)造完整。

如果在構(gòu)造函數(shù)中拋出異常會(huì)怎么樣呢?這是個(gè)著名的噩夢(mèng),因?yàn)槲鰳?gòu)函數(shù)不會(huì)被調(diào)用,在創(chuàng)建CMySimpleClass對(duì)象之前如果分配了資源就會(huì)泄露。關(guān)于在構(gòu)造函數(shù)中拋出異常可以單講一個(gè)小時(shí),但是有一個(gè)建議是:盡量避免在構(gòu)造函數(shù)中拋出異常。

所以,使用兩段式構(gòu)造法是一個(gè)更好的選擇。簡(jiǎn)單的說(shuō),就是在構(gòu)造函數(shù)避免任何可能產(chǎn)生錯(cuò)誤的動(dòng)作,比如分配內(nèi)存,而把這些動(dòng)作放在構(gòu)造完成之后,調(diào)用另一個(gè)函數(shù)。比如:


PFTL101B 20KN 3BSE004203R1的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
太仓市| 龙海市| 桂平市| 延安市| 灵寿县| 金湖县| 石首市| 同仁县| 宝山区| 贵溪市| 长汀县| 杭州市| 寻甸| 高陵县| 得荣县| 化隆| 理塘县| 广丰县| 朔州市| 凤城市| 灵宝市| 盐城市| 永昌县| 博罗县| 余姚市| 花莲市| 衡山县| 搜索| 黄大仙区| 惠东县| 松潘县| 图们市| 静海县| 沧源| 防城港市| 盐城市| 怀宁县| 德保县| 视频| 巫溪县| 晴隆县|