'new'是否会导致Java中的内存泄漏?
这个问题在这里已经有了答案:
总之,没有。 Java有一个内置的(和必需的)垃圾收集器。 C ++没有。
一旦Object
不再可访问(使用Java),它就有资格进行垃圾回收(并且收集器可以释放内存)。
像Java这样的内存管理语言中的“内存泄漏”与C ++中的“内存泄漏”并不完全相同,因为Java不要求您明确释放已分配的内存。
这样说,你可以通过基本相同的效果。 观察者模式的集合类和实现往往是这方面的主要罪魁祸首。 内存管理的后果之一是,如果任何对象持有对某个对象的引用,则该对象将保留在内存中,无论您是否打算再次使用它。 这可能导致对象在内存中停留的时间比所需的时间长得多(甚至在程序期间)。
如果引用非托管对象,也可能遇到问题。 对此有许多可能的解决方案; 例如,C#使用Dispose Pattern解决了这个问题。 但事实是,引入非托管对象可能会导致实际的内存泄漏。
链接地址: http://www.djcxy.com/p/19893.html