版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bestxianfeng163/article/details/84970160
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(*);
}
}