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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简单的程序,用于演示Java中的内存泄漏相关的知识,希望对你有一定的参考价值。

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

谢谢。

答案

http://www.codeproject.com/KB/books/EffectiveJava.aspx

见第6项。

另一答案

例如,如果您的引用不再需要,但无法被垃圾收集器捕获,则会发生内存泄漏。

有简单的例子,例如来自IBM,显示了原则:

http://www.ibm.com/developerworks/rational/library/05/0816_GuptaPalanki/

另一答案

一本好书的一个很好的例子:http://www.informit.com/articles/article.aspx?p=1216151&seqNum=6

另一答案
 Vector v = new Vector();
 while (true)
 {
     byte b[] = new byte[1048576];
     v.add(b);
 }

这将不断向向量添加1MB字节,直到内存不足为止

另一答案

让我们首先定义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();
    }
}

以上是关于一个简单的程序,用于演示Java中的内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

Java提高篇—— 简单介绍Java 的内存泄漏

当代码无法释放内存时,它是不是是 C 中的内存泄漏,但操作系统仍然会?

简单的 nodejs 应用程序中的内存泄漏

java程序员--小心你代码中的内存泄漏

如何防止java中的内存泄漏

Java 应用程序中 io.vertx.core.impl.EventLoopContext 中的内存泄漏