OOM相關
阿新 • • 發佈:2017-07-05
.... 占用 使用 csdn 體驗 class 申請者 ava 基本
昨天寫的差不多了,忘記發,結果不小心手抖把網頁給關了......博客園的用戶體驗還是差了些呀......
------------------------------------------------------------------
進入正題,OOM,即out of memory,也就是內存耗盡,內存用光的意思,即內存溢出,什麽時候會造成OOM報錯呢
當JVM因為沒有足夠的內存來為對象分配空間並且垃圾回收器也已經沒有空間可回收時
這裏要插句嘴,java中其中一個特性就是他的垃圾回收機制,即當一個對象沒有被引用時,他是可以回收的。在我們最開始學java的時候,就被告知這是java的優越性之一,誠然這是沒有錯的,但是也並不是說java有了這個垃圾回收機制,我們就可以肆意的對內存進行無休止的調用占用,正如《Effective Java》一書中就曾經提到過這個問題,你們認為有了垃圾回收機制就可以解決所有問題了嗎,不存在的(當然原話不是這樣說的......)
要深入理解OOM,這裏就要提到一個概念
內存泄露:申請使用完的內存沒有釋放,導致虛擬機不能再次使用該內存,此時這段內存就泄露了,因為申請者不用了,而又不能被虛擬機分配給別人用。 更多再往底層深入的知識就不再說了,我自己理解也有限,引一篇博文吧:關於OOM的那些事兒 道理很簡單,內存泄露的多了,就會造成內存溢出 內存溢出方面,申請資源盡量小,分布去做,緩解內存壓力基本上就是我們所能做的 我們更多的是讓自身盡量少造成內存泄漏的問題 那麽android中何時會造成內存泄露呢,依然引一篇博文吧 Android性能優化之內存泄漏 但是大體上我們可以總結一下,其實說穿了只是要在合適的時候取消引用,又或者說引用的方式要如何調整,就可以盡量去避免這個問題OOM相關