锁定老帖子 主题:经典的JAVA内存泄露代码征集
精华帖 (3) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (3)
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-03
sdh5724 写道 volking 写道 sdh5724 写道 环形封闭这个问题早就被解决了.
是阿?在哪能看到呢? 你可以看看APACHE的JDK的实现, 如何解决的, 另外OPENJDK也可以看到代码, 你去看看吧。 内存收集的算法很复杂的, 不是3言2语就能说清楚。 APACHE JDK听说代码写的是超级优雅,优雅之后的性能么, 我就哈哈哈哈咯, 你甚至可以自己写收集算法。 可以去玩玩哦:) 垃圾回收是jvm的事情。 垃圾回收的算法有很多种。基本都能解决环形引用。(除了reference couting以外) 比较经典的有mark-and-sweep mark-and-copy进化到后面的mark-and-compact。。。 |
|
返回顶楼 | |
发表时间:2009-01-03
第一个例子是不是把getConnection改成createConnection更形象一些。。。。@_@
第二个例子个人认为不能算leak吧。。。 我比较倾向于说java存在resource leak但是不存在memory leak的说法。。。 既然是leak,应该是pitfall类的东西。 不断的申请内存无论怎样都会OutOfMemory的。。。。 |
|
返回顶楼 | |
发表时间:2009-01-04
请问第二个有问题是不是在于在ensureCapacity()方法里面,会创建大容量的数组,这样会导致有问题?
|
|
返回顶楼 | |
发表时间:2009-01-04
最后修改:2009-01-04
zxzheaven 写道 请问第二个有问题是不是在于在ensureCapacity()方法里面,会创建大容量的数组,这样会导致有问题?
public Object pop() { if (size == 0) throw new EmptyStackException(); Object tmp = elements[--size]; elements[size+1] = null; return tmp; } |
|
返回顶楼 | |
发表时间:2009-01-04
造成内存泄露的史上最根本原因是比尔。盖茨不应该发明电脑.
|
|
返回顶楼 | |
发表时间:2009-01-04
最后修改:2009-01-04
感谢大家的回复,但是我的本意是找一些类似的范例,也好给新来者学习啊。产生内存泄露的理论大家应该都是比较清楚的,但是如何避免产生内存泄露呢?如果有一些经典的范例的话,那么可能代码走查起来可能会方便一下。
像下面这样,至少我能知道可能的陷阱,呵呵,虽然还不是代码 jfeng_lee 写道 Session中
1 放置了不适当的数据,如大小不可控的数据,Array,list等 2 不适当的session设置,导致session无法失效 数据库查询时 大量数据查询未作控制,全部一次性载入内存 |
|
返回顶楼 | |
发表时间:2009-01-04
罪恶的 non static ThreadLocal object !
这个很危险呀,有些程序员一不小心就做了 |
|
返回顶楼 | |
发表时间:2009-01-04
xyh 写道 造成内存泄露的史上最根本原因是比尔。盖茨不应该发明电脑.
电脑是比尔。盖茨 发明的吗? |
|
返回顶楼 | |
发表时间:2009-01-04
guoapeng 写道 xyh 写道 造成内存泄露的史上最根本原因是比尔。盖茨不应该发明电脑.
电脑是比尔。盖茨 发明的吗? 围观之 |
|
返回顶楼 | |
发表时间:2009-01-04
guoapeng 写道 xyh 写道 造成内存泄露的史上最根本原因是比尔。盖茨不应该发明电脑.
电脑是比尔。盖茨 发明的吗? |
|
返回顶楼 | |