我正在寻找一个可以在Java中演示内存泄漏的简单程序。
感谢。
答案 0 :(得分:3)
答案 1 :(得分:2)
例如,如果您的引用不再需要,但无法被垃圾收集器捕获,则会出现内存泄漏。
有一些简单的例子,例如来自IBM,显示了原则:
http://www.ibm.com/developerworks/rational/library/05/0816_GuptaPalanki/
答案 2 :(得分:0)
答案 3 :(得分:0)
Vector v = new Vector();
while (true)
{
byte b[] = new byte[1048576];
v.add(b);
}
这将持续向向量添加1MB字节,直到内存耗尽
答案 4 :(得分:0)
让我们首先定义什么是Java上下文中的内存泄漏-在这种情况下,程序可能错误地持有对该对象的引用,而该对象在程序其余的运行过程中再也不会使用。
一个例子,就是忘记关闭打开的流:
class MemoryLeak {
private void startLeaking() throws IOException {
StringBuilder input = new StringBuilder();
URLConnection conn = new URL("www.example.com/file.txt").openConnection();
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
while (br.readLine() != null) {
input.append(br.readLine());
}
}
public static void main(String[] args) throws IOException {
MemoryLeak ml = new MemoryLeak();
ml.startLeaking();
}
}