论坛首页 Java企业应用论坛

经典的JAVA内存泄露代码征集

浏览 28831 次
精华帖 (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。。。
0 请登录后投票
   发表时间:2009-01-03  
第一个例子是不是把getConnection改成createConnection更形象一些。。。。@_@
第二个例子个人认为不能算leak吧。。。

我比较倾向于说java存在resource leak但是不存在memory leak的说法。。。
既然是leak,应该是pitfall类的东西。

不断的申请内存无论怎样都会OutOfMemory的。。。。
0 请登录后投票
   发表时间:2009-01-04  
请问第二个有问题是不是在于在ensureCapacity()方法里面,会创建大容量的数组,这样会导致有问题?
0 请登录后投票
   发表时间: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;
   }
0 请登录后投票
   发表时间:2009-01-04  
造成内存泄露的史上最根本原因是比尔。盖茨不应该发明电脑.
0 请登录后投票
   发表时间:2009-01-04   最后修改:2009-01-04
感谢大家的回复,但是我的本意是找一些类似的范例,也好给新来者学习啊。产生内存泄露的理论大家应该都是比较清楚的,但是如何避免产生内存泄露呢?如果有一些经典的范例的话,那么可能代码走查起来可能会方便一下。
像下面这样,至少我能知道可能的陷阱,呵呵,虽然还不是代码
jfeng_lee 写道
Session中
1 放置了不适当的数据,如大小不可控的数据,Array,list等
2 不适当的session设置,导致session无法失效

数据库查询时
大量数据查询未作控制,全部一次性载入内存

0 请登录后投票
   发表时间:2009-01-04  
罪恶的 non static  ThreadLocal object !

这个很危险呀,有些程序员一不小心就做了
0 请登录后投票
   发表时间:2009-01-04  
xyh 写道
造成内存泄露的史上最根本原因是比尔。盖茨不应该发明电脑.

电脑是比尔。盖茨 发明的吗?
1 请登录后投票
   发表时间:2009-01-04  
guoapeng 写道
xyh 写道
造成内存泄露的史上最根本原因是比尔。盖茨不应该发明电脑.

电脑是比尔。盖茨 发明的吗?

围观之
0 请登录后投票
   发表时间:2009-01-04  
guoapeng 写道
xyh 写道
造成内存泄露的史上最根本原因是比尔。盖茨不应该发明电脑.

电脑是比尔。盖茨 发明的吗?
 
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics