欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

iOS優(yōu)化內(nèi)存,提升性能之五-創(chuàng)新互聯(lián)

Advanced Autorelease Pool 高級自動釋放池

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、五常網(wǎng)站維護(hù)、網(wǎng)站推廣。

在之前的章節(jié)你已經(jīng)學(xué)習(xí)了很多基本的內(nèi)存方面的知識。這個部分將會涉及到使用自動釋放的高級技術(shù),同時展示你應(yīng)該在哪里使用,從而在受限的情況下獲得比較高的性能。

在每一個線程中,你應(yīng)該要有一個自動釋放池來收集和存儲所有自動釋放的對象。如果在每一個線程中,沒有自動釋放池的話,所有的autoreleased對象會泄露,你將會有一個重大的內(nèi)存泄露。自動釋放池是通過棧的形式組織在一起的;下面部分會解釋。

自動釋放池和棧

自動釋放池存儲在一個棧中,通常被理解成嵌套的。無論何時你創(chuàng)建一個新的自動釋放池,它都會被push到棧的頂部。然后所有新的autoreleased對象會被push到這個新的自動釋放池中。

通過下面的代碼你可以看到,對象(比如myArray和myString)內(nèi)部的方法doSomething將會存儲在myPool中,而不是應(yīng)用的main pool中:

- (void)doSomething {

  @autoreleasepool {

      NSArray *myArray = [NSArray array];

      NSString *myString = [NSString string];

   }

}

這是main方法的main pool:

int main(int argc, char *argv[]){

  @autoreleasepool {
      int retVal = UIApplicationMain(argc, argv, nil, nil);

   }

  return retVal;

}

在@autoreleasepool塊結(jié)束的時候,當(dāng)時間生命周期結(jié)束時,所有存儲在這個pool中的autoreleased對象jiang將被released。

圖7-9展示了這個概念。對于一個好的性能來說,這是一個非常重要的概念 --  知道盡可能快的release對象。

iOS優(yōu)化內(nèi)存,提升性能 之五

自動釋放池和線程

當(dāng)創(chuàng)建一個新的線程時,你需要創(chuàng)建一個新的自動釋放池對象,然后將這個pool和新的線程聯(lián)系在一起。因此當(dāng)線程停止時,你的自動釋放池會deallocated,所有的autoreleased對象也會deallocated。第6章我會深入的討論這個主題,所以你應(yīng)該復(fù)習(xí)一下,如果你在理解概念時需要一些幫助的話。

自動釋放池對性能的影響

舊的內(nèi)存管理規(guī)則依然能夠應(yīng)用在用ARC編寫的代碼上,如果你沒有使用new,alloc和copy調(diào)用一個方法,這個對象就已經(jīng)是autoreleased了。如果你在一個循環(huán)中創(chuàng)建了很多的autoreleased對象,很快內(nèi)存就會耗盡。

這個代碼演示了在循環(huán)中處理內(nèi)存管理最好的方法:

- (void)doSomethingWithAutoRelease {

    for (int i = 0; i < 1000; i++) {

        @autoreleasepool {
        Product *product = [Product productWithItemID:@""];

        // process and display the product here

        }

    }

}

在循環(huán)結(jié)束的時候,以及在@autoreleasepool塊的尾部,所有的autoreleased對象會released。這種方法你能夠控制和release所有位使用的對象和回收你的內(nèi)存。

Instruments

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前名稱:iOS優(yōu)化內(nèi)存,提升性能之五-創(chuàng)新互聯(lián)
URL分享:http://chinadenli.net/article42/ddijec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、全網(wǎng)營銷推廣、網(wǎng)站營銷品牌網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)