棧,記憶體溢位的原因以及物件與物件引用
阿新 • • 發佈:2018-12-24
31,棧溢位的原因
是否遞迴的呼叫;大量迴圈;全域性變數是否過多;陣列,List,Map資料是否過大;用DDMS工具檢查地方。
記憶體溢位的原因
過多使用了static;static最好只用int和string等基本型別;大量的遞迴或者死迴圈;大資料項的查詢,
如返回表的所有記錄,應該採用分頁查詢。檢查是否有陣列、List、map中存放的是物件的引用而不是物件,
這些引用會讓對應物件不能被釋放。
棧過大會導致記憶體佔用過多,頻繁頁交換阻礙效率。
Person person;引用
person =
new
Person(
"張三"
);
張三是物件
一個引用可以指向多個物件,
person=new Person("李四");
一個物件可以被多個引用所指向
Person person;引用
person1 = new
Person(
"張三"
);
Person person2 = person1;
Vector<String> A = new Vector<String>(); for(int i = 0; i < 100; i++){ Object o = new Object (); A.add(o); o = null; } ........ 記憶體溢位的例子 StringBuffer b = new StringBuffer (); for(int i =0; i < 100; i++){ for(int j =0; i < 100; j++){ b.append(*); } }