'new'是否会导致Java中的内存泄漏?

这个问题在这里已经有了答案:

  • 用Java 52回答创建内存泄漏

  • 总之,没有。 Java有一个内置的(和必需的)垃圾收集器。 C ++没有。

    一旦Object不再可访问(使用Java),它就有资格进行垃圾回收(并且收集器可以释放内存)。


    像Java这样的内存管理语言中的“内存泄漏”与C ++中的“内存泄漏”并不完全相同,因为Java不要求您明确释放已分配的内存。

    这样说,你可以通过基本相同的效果。 观察者模式的集合类和实现往往是这方面的主要罪魁祸首。 内存管理的后果之一是,如果任何对象持有对某个对象的引用,则该对象将保留在内存中,无论您是否打算再次使用它。 这可能导致对象在内存中停留的时间比所需的时间长得多(甚至在程序期间)。

    如果引用非托管对象,也可能遇到问题。 对此有许多可能的解决方案; 例如,C#使用Dispose Pattern解决了这个问题。 但事实是,引入非托管对象可能会导致实际的内存泄漏。

    链接地址: http://www.djcxy.com/p/19893.html

    上一篇: Does 'new' cause a memory leak in Java?

    下一篇: Are memory leaks totally absent in Java applications?