内存泄漏/溢出/垃圾回收
程序员文章站
2022-07-14 18:33:25
...
模拟堆栈,无垃圾回收,一直添加元素,造成内存溢出
class StackList{
Object[] elements;
int index = 0 ; //当前的索引值
public StackList(){
this.elements = new Object[3];
}
//添加内容
public void add(Object o){
//添加元素之前应该要先检查是否容量够用。
ensureCapcity();
elements[index++] = o;
}
//出栈: 删除集合的元素,并且返回。
public Object pop(){
int tempIndex = --index;
Object o = elements[tempIndex];
elements[tempIndex] = null; //让该位置不再 引用着指定的对象,让垃圾回收期赶快回收该垃圾。否则内存泄露
return o;
}
//检查当前的数组使用够用。
public void ensureCapcity(){
if(index==elements.length){
//计算一个新的长度
int newLength = elements.length*2;
elements = Arrays.copyOf(elements, newLength);
}
}
//获取当前的元素 个数
public int size(){
return index;
}
}
上一篇: Js setInterval setTimeout
下一篇: centos 定时任务 周期任务