2015年10月5日 星期一

「Android」OOM

最近遇到一個問題,弄了俺一個小時,明明前一分鐘還是好好的,

正所專案一大,一個不注意就有可能發生這個情況,從錯誤訊息中

看不出來那裡導致它掛了。
























最明顯的一行就是

Throwing OutOfMemoryError "Failed to allocate a 28 byte allocation with 571832 free bytes and 558KB until OOM

由上面一行,我可以知道是因為Out Of Memorry 造成的錯誤,一開始以為是資源檔太大

後面發現,原來是因為自己犯傻囉,我們先來看一下底下的示範CODE

MainActivity.java


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Func1 f1=new Func1();
    }
}

Func1.java

public class Func1 {

    public Func1()
    {
        Func2 f2=new Func2();
    }
}

Func2.java


public class Func2 {


    public Func2()
    {
        Func1 f1=new Func1();
    }
}

沒錯,Fun1.java在建構子中呼叫Func2的建構子,Func2的建構子中

也呼叫了Func1的建構子,不斷的糾結下去就爆了,一啟動APP就立刻

crash的不明不白。


參考來源:

我自己

沒有留言:

張貼留言