⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 leakstack.java

📁 高质量Java程序设计 源代码
💻 JAVA
字号:
package net.betterjava.memory.leak;
import java.util.EmptyStackException;

class Element {
	private byte[] data;

	public Element(int size) {
		data = new byte[size];
	}
}

public class LeakStack {
	private Object[] stack;
	private int top = -1;

	public LeakStack(int initialCapacity) {
		stack = new Object[initialCapacity];
	}

	public void push(Object e) {
		ensureCapacity();
		top++;
		stack[top] = e;
	}

	public Object pop() {
		if (top == -1)
			throw new EmptyStackException();
		Object temp = stack[top];
		stack[top] = null;
		top--; //release the reference of Element 
		return temp;
	}

	private void ensureCapacity() {
		if (stack.length == top + 1) {
			Object[] temp = stack;
			stack = new Object[2 * stack.length + 1];
			System.arraycopy(temp, 0, stack, 0, top);
		}
	}

	public static void main(String[] args) {
		try {
			int round = 1000;
			LeakStack s = new LeakStack(2000);

			for (int i = 0; i < 2; i++) {
				System.out.println("push" + i);
				for (int j = 0; j < round; j++) {
					s.push(new Element(60000));
					//System.gc();
				}

				System.out.println("pop" + i);
				for (int j = 0; j < round; j++) {
					s.pop();
				}
			}
		} catch (EmptyStackException e) {
			e.printStackTrace(System.out);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -