1: not
2: return reference
3: yes, because of reference to each other

解决方案 »

  1.   

    楼主还是以c或c++的思想来考虑java,其实java可以为你管理大部分内存,除非用到jni,你才需要手动管理,看看《Thinking in java》
      

  2.   

    感谢二位,请帮忙再次确认。1. 看来不用myVector.getAt(i) = null;了?确认
      myVector.clear();
      myVector = null;
    后JVM就能够识别他是垃圾吗:)2. 如果是这样,返回的引用不释放,栈上分配的这个String就释放不了?
       需要显式调用
       public static void main(String[] args)
       {
        String myString = "";
        myString = getString();
        myString = null;  //需要这样显式调用吗?
       }3. 循环引用在很多模式中都有应用。加上了
      protected void CSon::finalize()
      {
        this._parent = null;  //if I do not add here, whether memoryleak comes up?
      }
    后,还有问题吗?如果有,该如何解决?可否提示一二。俺也不想把java想复杂了,问题是一个服务运行几星期后就会完蛋,叫我怎么办啊:(
      

  3.   

    原本java设计出来就是想解脱程序员的苦恼的
    呵呵 但是有时写程序 不去了解它回收机制 会这样想的了
    建议看看thik in java里面讲的还蛮清楚的
      

  4.   

    only No 2. 
    Java 中永远是值传递。return reference的正确理解是传递reference的值。(看来我们需要搞清楚三个东西的区别)
    String myString =  "123";
    myString是“引用变量”,“123”是对象,对象的引用(比如String@eghegye)是myString 的值。/** 
     Currently I am not very sure how java handles String.
     It is on heap or stack?
     when I call getString(), returns pointer or copy all the string out of the stack?
    */
    myString handle(我喜欢把引用变量称为句柄) the reference of "123"。
    two myString are on stack,when u call getString(), returns the reference of what myString
    is holding.
    "all the string out of the stack" ? 晕。None object on stack in Java。myString = null;  //需要这样显式调用吗?
    不需要。
      

  5.   

    1、不需要
    2、heap;returns pointer 
    3、不需要this._parent = null。这属于交叉引用,现在的垃圾收集器都简单采用引用计数的方法识别垃圾,所以交叉引用不会妨碍垃圾收集
    4、对Corba不清楚
      

  6.   

    CSon::finalize()??????
    朋友的是Java程序吗?感觉CParent,CSon有点别扭。
    :)
      

  7.   

    Thanks alot, my friends.