比如
    static double[] arr;
            for(int i=0; i<100; i++){
            arr = new double[3];
            arr[0] = i;
            arr[1] = i;
            arr[2] = i;        }
        
这样有没有问题?会不会造成很多内存垃圾?

解决方案 »

  1.   

    arr = new double[3];这一句为什么要放在循环里面呢,代码没点实际作用,看起来,直接都是99嘛,循环一点作用也木有。static的是放在栈中,你每次new肯定是重新分配空间的,会有垃圾的。如果是像你这种情况,就不要弄成static的
      

  2.   

    因为大小不固定。类变量不是static难道不是在栈里面吗?
      

  3.   

    对好像先null一下,告知gc这个引用所指向的对象是可以被回收了,
    但是这样的话,代码可能看起来会“很怪”,例如:for (int i = 0; i < n; ++i) {
        arr = null;
        arr = new double[3];
        // ...
    }