在程序里生成了大量的new File()对象,不知道这样的代码对程序的性能有不好的影响吗?
代码如下:
Map<File, String> ct = new TreeMap<File, String>();
for(int i =0 ;i < 3000 ;i ++){
   ct.put(new File("//aa//"+i+".txt"), "");
}
谢谢。

解决方案 »

  1.   

    性能是肯定有影响的。new了这么多对象,内存消耗很大
      

  2.   

    File类只是用来描述路径的,跟new 了一堆Object一样的效果
      

  3.   

    无论是什么,new多了都要占用大量内存,影响性能
      

  4.   

    其实- =   在循环里面最好别new  很可怕的东西.
      

  5.   

    put文件路径不是更好?key,value的位置是否要换一下?
      

  6.   

    把File的路径改成String存入Map比较好吧。需要用的时候再用路径new File()
      

  7.   

    循环中最好不要使用 new ,你可以在实际用到的时候再 new File 对象,和Hibernate中的延迟加载有点像吧,在使用时再加载(创建)它。
      

  8.   

    逻辑需要就用,有性能问题的时候再考虑改.
    Map内容如果太多,put什么都会占内存.
      

  9.   

    Map<File, String> ct = new TreeMap<File, String>();
    没见过用file对象做key的  用文件唯一标示做key吧 比如路径
      

  10.   

    new 的太多了;
    前边路径相同,用 String 做 Key 不行吗? ct.put("//aa//"+i+".txt", "");
      

  11.   

    先不论new File()不知道lz这段代码是随便写的还是原样。Map<File, String> ct = new TreeMap<File, String>();
    for(int i =0 ;i < 3000 ;i ++){
      ct.put(new File("//aa//"+i+".txt"), "");
    }的作用和List<File> list = new ArrayList<File>(3000);
    for(int i =0 ;i < 3000 ;i ++){
      list.add(new File("//aa//"+i+".txt"));
    }
    有什么本质区别?
      

  12.   

    泛型File改String ,循环结束后需要哪个再拿出来new不是更好吗。
      

  13.   

    问题不在new File()
    new其它的对象这样做也是不太适合的。
    最好是处理一个new一个,处理完了就销毁掉
      

  14.   

    java中不能自己销毁的。是GC回收。。
    最好的做作是在循环外面new,每次循环的时候把这个引用指向不同的对象