消除过期的对象引用-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
Java虽然有自己的垃圾回收机制,但是并没有那么的智能,对于被引用的对象,就算我们已经不在使用它了,但是Java的回收机制是不会回收它们的,人们称之为“内存泄漏”。
以下为三种不同的内存泄漏场景,极其优化方案
1、只要类自己管理内存,就该警惕内存泄漏问题
例如Stack类自己管理内存,在元素出栈,忘记设置为null时,容易引起内存泄漏问题。
import java.util.Arrays;
import java.util.EmptyStackException;
public class Stack {
private Object[] elements;
private int size = 0;
private static final int DEFAULT_INITIAL_CAPACITY = 16;
public Stack() {
elements = new Object[DEFAULT_INITIAL_CAPACITY];
}
/**
* 入栈
*/
public void push(Object e) {
ensureCapacity();
elements[size++] = e;
}
/**
* 出栈
*/
public Object pop() {
if (size == 0)
throw new EmptyStackException();
return element