SurfaceView記憶體流失問題的解決,surfaceview記憶體流失

來源:互聯網
上載者:User

SurfaceView記憶體流失問題的解決,surfaceview記憶體流失

mSurfaceView.getHolder().getSurface().release();



mfc中的記憶體流失問題怎解決

百度百科 記憶體泄露:
一般我們常說的記憶體流失是指堆記憶體的泄漏。堆記憶體是指程式從堆中分配的,大小任意的(記憶體塊的大小可以在程式運行期決定),使用完後必須顯式釋放的記憶體。應用程式一般使用malloc,calloc,realloc,new等函數從堆中分配到一塊記憶體,使用完後,程式必須負責相應的調用free或delete釋放該記憶體塊,否則,這塊記憶體就不能被再次使用,我們就說這塊記憶體流失了。
記憶體流失是常見的問題。當以前分配的一片記憶體不再需要使用或無法訪問時,但是卻並沒有釋放它,那麼對於該進程來說,會因此導致總可用記憶體的減少,這時就出現了記憶體流失。儘管優秀的編程實踐可以確保最少的泄漏,但是根據經驗,當使用大量的函數對相同的記憶體塊進行處理時,很可能會出現記憶體流失。尤其是在碰到錯誤路徑的情況下更是如此。
參考資料:百度
 
JAVA 記憶體流失問題

Java中雖然使用了gc策略,但事實上還是會出現記憶體流失現象的,java因此還提出了弱引用等局部解決方案。

但樓主說的System.exit(0)是不會形成記憶體流失的。

其實這裡都是兩個範疇的記憶體了。樓上以及我開始說的Java中的記憶體是指虛擬機器的記憶體,映射到宿主機可以有各種實現,雖然一般也是映射到記憶體。 而System.exit(0)會析構掉虛擬機器,也就是把這個虛擬機器都拆了,也就無從談起虛擬機器記憶體流失不泄漏的概念,正所謂皮之不存,毛將焉附。而問題是宿主機的記憶體是否泄漏了。從原理上說,虛擬機器運行時,不管執行怎樣的指令,映射到宿主機器資源,都回在機器被拆掉時釋放。當然,從實現上說,如果宿主作業系統,或者JVM有bug,當然有可能造成記憶體流失,但和java程式員寫的客戶程式無關。(補充:包括在宿主機內殺java進程,其資源回收問題是作業系統和java平台的責任。我們在古老的作業系統經常會遇到檔案沒正常關閉之類的問題,但現在的作業系統這些問題應該不會很大,也就是宿主機其實也有一定的回收機制,包括記憶體回收,但著本身不是記憶體流失的範疇,記憶體流失是指程式運行時的客戶程式造成的記憶體資源失控。當客戶程式退出時的問題,就是作業系統設計的範疇了)
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.