無限長度的listview會記憶體溢位麼

2022-09-13 14:17:06 字數 1784 閱讀 9336

1樓:千鋒教育

android中常有的記憶體溢位原因

一,大量點陣圖的載入

有時候我們需要從網路上獲取大量的**並且展現在view中,但是如果**較大,一次性載入大量bitamap,那麼程式可用記憶體會瞬間增長,引起oom,通常的解決方法是開始不載入位圖,設定bitmapfactory.options的injustdecodebounds為true,先獲取到寬高,這時候點陣圖並不會載入到記憶體中,然後計算縮放比例再載入位圖適應view控制項,這樣可以避免oom的產生

二, bitmap物件不在使用時呼叫recycle()釋放記憶體

有時我們會手工的操作bitmap物件,如果乙個bitmap物件比較佔記憶體,當它不在被使用的時候,可以呼叫bitmap.recycle()方法**此物件的畫素所占用的記憶體,但這不是必須的,視情況而定。

三, 查詢資料庫沒有關閉游標

程式中經常會進行查詢資料庫的操作,但是經常會有使用完畢cursor後沒有關閉的情況。如果我們的查詢結果集比較小,對記憶體的消耗不容易被發現,只有在常時間大量操作的情況下才會復現記憶體問題,這樣就會給以後的測試和問題排查帶來困難和風險。

四,構造adapter時,沒有使用快取的 convertview

以構造listview的baseadapter為例,在baseadapter中提高了方法:

public view getview(int position, view convertview, viewgroup parent)

來 向listview提供每乙個item所需要的view物件。初始時listview會從baseadapter中根據當前的螢幕布局例項化一定數量的 view物件,同時listview會將這些view物件快取起來。當向上滾動listview時,原先位於最上面的list item的view物件會被**,然後被用來構造新出現的最下面的list item。

這個構造過程就是由getview()方法完成的,getview()的第二個形參 view convertview就是被快取起來的list item的view物件(初始化時快取中沒有view物件則convertview是null)。如果我們不去使用convertview,而是每次都在getview()中重新例項化乙個view物件的話,即浪費資源也浪費時間,也會使得記憶體占用越來越大。

j**a 宣告new 過多臨時對像會導致記憶體溢位,怎麼解決?

2樓:匿名使用者

要看你設定的jvm的執行記憶體了。如果足夠大就不會,如果小了就會的!

3樓:我愛李沛霞

我覺得應該把stu stu 放到迴圈外面,那麼每次例項化同乙個stu。當你第二次new的時候,stu就取消了對第一次的引用。那麼很可能就會被**掉了。

否則你每次都是乙個新的stu。每乙個引用都存在,系統就會以為你還會使用,所以不會**。就好比一對多和多個一對一的關係,前面只有乙個物件被引用,其餘的都可能**,而後面是每個物件都被引用,所以不會**,不知道解釋的對不對,個人理解。

4樓:翔空冥斬劍

以現在機器配置來說,1000是沒什麼壓力的。如果list長度達到百萬級,並且物件型別比較複雜的話,堆溢位就很常見了。一般來說造成如果可能造成記憶體溢位,那麼**一定不合理,仔細考慮一下是不是一定要把上百萬的資料量集中到一起處理,最好是分段進行,處理一部分就清空一次記憶體,這樣就不會記憶體溢位了

5樓:匿名使用者

增加執行記憶體

-xms128m

-xmx512m

-xx:permsize=64m

-xx:maxpermsize=128m

柱子內縱筋的搭接長度明確是多少?(我們工程採用的是綁紮,沒有

一般百分之五十的搭接率,那麼長度應該是lle 1.4 lae。假如是14的鋼筋 用的c30 那麼搭接長度等於34d 1.4 34 0.014 1.4 0.66公尺。縱筋,又叫縱向鋼筋。縱筋一般指長度方向的主要受力鋼筋,在混凝土構件內沿長方向布置的鋼筋,多為受力鋼筋,主要在構件中承受拉力。如柱子的豎向...

時鐘的分針和時針00 00至06 00內會重合幾次,分別在幾點

1點多,2點多,3點多,4點多,5點多分別重合一次。分針走的快,速度是每小時360度,時針走的慢,速度是每小時360 12 30度。設起點是0點整,二者的距離差是360度。距離差 速度差 相遇時間 所以相遇時間 360 360 30 12 11小時。所以重合時間是1點又1 11小時,約等於1點5分2...

用火烤竹子,如果溫度過高竹子內的空氣會怎樣

迅速膨漲,竹子很快會炸開。嘭嘭 竹子內的空氣會膨脹,最終會撐破竹子 溫度過高,竹子節跟節間若沒留通氣孔,裡面空氣會膨脹,竹子會爆裂.用火烤竹子,如要 溫度過高,竹子內 溫度過高,竹子節跟節間若沒留通氣孔,裡面空氣會膨脹,竹子會爆裂.大火能燒死竹子嗎,用火燒了對它有影響嗎?火只能燒死竹子的杆的部分,但...