讨论者有分!谢谢各位大侠!

解决方案 »

  1.   

    什么是内存泄露?
    java有内存泄露的问题吗?
      

  2.   

    effect java里讲的堆栈里会维护对弹出数据的过期引用,即使这些数据不再被用,只要栈还在,这些过期数据都不会被回收,时间长了就会内存不足崩溃掉
      

  3.   

    JVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成溢出,或者tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。可以考虑设置Xms和Xmx
      

  4.   

    java常量池里的东西啥时候回收呀  可能会造成楼主那问题啵?
      

  5.   

    主要是全局的map或list等,在整个运行期内都会用到,虚拟机当然不会回收了,此时,如果你只进不出,比如一些没用数据不断存在于map中,时间长了,就会有问题。
      

  6.   

    java有几个地方会造成内存泄漏。
    集合类容易造成内存泄漏,jni容易造成内存泄漏,数据库连接容易造成内存泄漏等等。
    虽然java有垃圾收集机制,但并不代表不会出现内存泄漏。
      

  7.   

    还有,开发swing时,过多new窗口或者swing组件,也会出现内存泄漏,不过这种泄漏是属于集合类的内存泄漏。
      

  8.   

    虚拟机几乎不可能有内存泄漏问题,但是Java应用对资源管理不当可能会导致内存无法释放。
      

  9.   

    有内存泄露啊 比如int相减 绝对大-绝对小就会了
      

  10.   

    Integer a=new Integer(1);
    List<Integer> list=new ArrayList<Integer>();
    list.add(a);
    a=null;//a并没有被回收
      

  11.   

    LS  但是  如果LIST 不被引用了 a 应该就可以被回收了吧
      

  12.   

    自己实现堆载的数据结构时有可能会出现内存泄露,可参看effective java
      

  13.   

    http://www.cnblogs.com/dotnetdoor/archive/2008/06/09/1216125.html
      

  14.   

    当int i为一个很大的数时,执行i-2i时就会出现了。---------------------------------------------------------------------------------------------------- 
    北京-java QQ群: 88937547  java技术交流,新开群,目标200人。另:招管理员,只要技术好,热心回答别人的问题就行。
      

  15.   

    Java从某种程度上说,并不存在内存泄漏问题,因为有GC(垃圾回收器)
    但是你所指的内存泄漏可能是指引用对象的引用变量没被值null。
      

  16.   

    内存分为栈区,堆区,方法区
    如果是栈溢出那一定是你递归的太深。不听的声明变量导致的。
    如果是堆溢出那可能性很多。譬如你机器本身内存很小。一次性执行大的内存数据的拷贝。一次性从数据库读入很大的一张表。你的一些对象一直被其它对象引用譬如你有个object o = new object();map.put(o);这个map一直在你的一个运行的线程中这样即使你将o=null你new出来的对象也永远不会被垃圾回收。
      

  17.   


    我想这个不能称为内存泄漏吧,因为通过map还能访问这个对象,所以回收了反而是不正确的.
    只有那些没办法再用到的东西还没有回收的话才是内存泄漏。
    比如二楼所说的,堆栈里会维护对弹出数据的过期引用,即使这些数据不再被用,只要栈还在,这些过期数据都不会被回收,时间长了就会内存不足崩溃掉。
    弹出的数据无法通过栈访问了,那么这些数据就没法取得了,如果不被回收的话,就是内存泄漏
      

  18.   

    JAVA中内存益出很正常
    否则 java.lang.OutOfMemoryError  这个异常留着干嘛用的?
      

  19.   

    没错,是有的,eclipse这个Java实现的平台就存在内存泄露(在open new window时),在MemoryAnalyzer这个eclipse插件的说明中就举了这个例子,这个插件就是用来检查内存泄露的,我前一段时间用过,很不错。
      

  20.   

    感谢各位大侠的参与!答案我是有的!只是和大家具体讨论一下!
    java 肯定是有内存泄漏!我说的绝对一点“所有语言都会有内存泄漏问题”!
    希望大家继续 讨论!等待高手!
    特别感谢16楼 ,这个链接真的很不错!大家也学习下吧!12楼 和17楼也特别感谢一下!