一个简单的程序,用于演示Java中的内存泄漏

时间:2010-10-31 09:16:31

标签: java memory memory-leaks

我正在寻找一个可以在Java中演示内存泄漏的简单程序。

感谢。

5 个答案:

答案 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();
    }
}