关于java中的内存泄漏

02-12-04 richter
    

大家好, 看了 joshua bloch 的 Effective Java Programming 的 2.5 节,感觉 他的 Stack 例子好

像不全,其中Stack 只增不减,用此例讲内存泄漏感觉牵强。

此为小弟的看法,请大家指教。有没有更好的关于java 内存泄漏的例子。

    

banq
2002-12-05 21:06

stack只增不减我认为是内存泄漏的好例子, 比如我们常用单态singelton的hashmap作为内存保存系统运行信息,但是如果只增加hashmap的内容,缺乏严格的hashmap清除机制,就很容易造成内存泄漏。

richter
2002-12-06 00:09

你好:

Joshua Bloch 说道“If a stack grows and then shrinks, the objects that were popped off the stack will not be garbage collected, even if the program using the stack has no more references to them.” 在此例中没有提供收缩stack 的方法,被抛出的对象用户依然能访问,对象处在reachable 状态,这时对象当然不能被gc。如果提供了stack 收缩,此时的已抛出对象仍然能被gc。

我觉得这个例子中的错误完全由程序员造成。我试过只要stack 收缩后,其pop的对象既被gc。

此为小弟一家之言。请大家发表意见指正。

anonymous
2004-11-17 12:59

是的,内存泄漏是可以避免的。也可以人为的制造内存泄漏。