栈,内存溢出的原因以及对象与对象引用

版权声明:本文为博主原创文章,未经博主允许不得转载。 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(*);

}

}

猜你喜欢

转载自blog.csdn.net/bestxianfeng163/article/details/84970160