static对象 java垃圾回收器回收么 和一般new出来的对象回收时有明显区别么?

解决方案 »

  1.   

    java 里面的对象都是在
    heap里面的分配内存只要满足垃圾对象的条件 ,就可能被回收
    没有区别
      

  2.   

    倒,垃圾回出是有条件的,当不再被引用时才能够被回收,并且这指的是堆中的对象。static 成员不在堆中,通常我们认为其生命周期与虚拟机一样长,因此是不可能被回收的。
      

  3.   

    static 的对象似乎是不会被回收的
      

  4.   

    static修饰的成员是定义在一个叫Class类对象中的
    这个对象是在堆中分配的
    所以会被回收
      

  5.   

    static 对象共享某块内存空间,他的生命周期和JVM一样长,当程序停止运行时该内存才会被释放
      

  6.   

    static 对象在内存的静态存储区
      

  7.   

    停止运行就回收了
      和JVM一样长的周期吧
      
      垃圾要分类回收的,环保嘛
      

  8.   

    不会。
    我以前用websphere5.1做个项目,用了个通用的连接池类,单例模式,开发过程中修改代码用热替换功能即时运行,原连接池类的实例不会被释放(原来开的连接一直在),jvm重新new一个连接池类
      

  9.   

    晕,有static对象吗?只听说过静态方法、变量滴。看Think in java 里说java 里面的对象都是在heap里面的分配内存,Reference在stack中分配。
        gc会根据stack中reference来确定垃圾回收,回收对象拉,对象所属的静态方法、变量也就回收了把。
      

  10.   

    yjh133(哈哈) ( ) 信誉:100 
    晕,有static对象吗?只听说过静态方法、变量滴。看Think in java 里说java 里面的对象都-------------------------------------------
    汗一下, static String str = new String(“I'm a static object!!!!”);
      

  11.   

    static的生命周期肯定和虚拟机一样才长!
    但回收时机,要看JVM的实现了!
      

  12.   

    楼上各位的java基本功有待改进。以一个典型的static 为例:
    static String str = new String("a string object");这里str 在内存中是一个指针,指到一个String对象( "a string object")上.
    所以当 我们令  str= new String("another string object"); 这时候String对象( "a string object")失去引用,所以该对象将会被释放。
    但str指针指到新的String,所以str指针本身不会被释放。当 final static String str = new String("a string object");
    这个str是final,所以其指到的对象永远不会失去引用,所以永远不会被释放。
      

  13.   

    楼上各位的java基本功有待改进。
    这个str是final,所以其指到的对象永远不会失去引用,所以永远不会被释放。
    ##################################
    jvm都停止了呢?