<small>
1、java中垃圾回收机制
java中的内存溢出现象
Dog[] dogs = new Dog[10000000];
for(int i=0; i<dogs.length; i++){
dogs[i] = new Dog();
}
java.lang.OutOfMemoryError内存溢出现象,
非常可怕,必须避免。
解决方案:
for(int i=0; i<dogs.length; i++){
dogs[i] = new Dog();
//dogs[i]的使用 start
//dogs[i]的使用 end
dogs[i] = null;
}
将使用完毕的引用尽快指向null,便于
垃圾回收机制对没有被引用指向的对象进行回收,
释放内存空间,有效的避免内存的浪费使用导致
内存溢出现象。
2)、java中的垃圾回收机制(java自动完成)
System.finalize();
扫描堆中,是否存在没有被引用指向的对象。
System.gc();
如果有此类对象,gc会自动“回收”对象
释放其所占有的内存空间。从而达到内存的
有效使用,避免出现内存溢出现象。
有以下代码
List dogs = new ArrayList();
for(int i=0; i<10000; i++){
Dog dog = new Dog();//10000个引用,及10000个对象。
dogs.add(dog);
}
System.out.println(dogs.size());//10000
将上述代码优化如下:
List dogs = new ArrayList();
Dog dog = null;
for(int i=0; i<10000; i++){
dog = new Dog();//1个引用、一个对象
dogs.add(dog);
}
System.out.println(dogs.size());//10000
找对象-归类-特征、行为描述
创建类(属性、方法)- 创建对象(属性赋值、方法调用)
step1:找对象
-号对象:
属性:
200个对象 - 1个
x、y轴的坐标(每个对象坐标固定)
组成元素:字符"-"
行为:打印
号对象
属性:
1个
x、y轴的坐标(不固定)
组成元素:字符""
行为:打印
左移、右移、下落、上移(不允许)
step2:归类
-:Line
int x,y;//坐标
String CHARACTER = "-";//组成元素
printLine()//打印
*:Cell
int x,y;//坐标
String CHARACTER = "*";//组成元素
printCell()//打印
moveLeft()//左移
moveRight()//右移
drop()//下落
Wall:墙面
不需要再由200个 - 号对象组成。
因为 - 号对象是死的,不仅不能给开发带来好处,
只能增加负担。
属性:
行数、列数
组成元素: -
方法:
打印。