如何测试程序运行占用的内存大小?有什么相关的api么?
顺便问下:class My{
   ....
}LinkedList<My> l = new LinkedList<My>();
for(int i = 0;i<10;i++){
    l.add(new My());
}我想吧l转换为map[]的,
为什么 map[] m = (map[])l.toArray();在运行的时候报错?
而     map[] temp = new map[]{};
      map[] m = l.toArray(temp);就没错。。
LinkedList里面的toArray(T[] a) 的a必须像上面的temp一样先声明么?

解决方案 »

  1.   

    给你个例子,csdn中的一个列子:
    public   class   T   
      {   
      public   static   void   main(String[]   args)   throws   Exception   
      {   
      //   创建   1000   个   String   
      String   strA[]   =   new   String[1000];   
      long   start   =   0;   
      long   end   =   0;   
        
      //   先垃圾回收   
      System.gc();   
        
      start   =   Runtime.getRuntime().freeMemory();   
      for   (int   i   =   0;   i   <   1000;   i   ++)   
      strA[i]   =   new   String();   
        
      //   快要计算的时,再清理一次   
      System.gc();   
        
      end   =   Runtime.getRuntime().freeMemory();   
        
      System.out.println("一个String对象占内存:"   +   (start   -   end)/1000.0);   
        
      }   
      }
      

  2.   

    如下代码居然返回     “一个map对象占内存:-4.11944”
    顺便问下:有人可以回答下我的1楼问的那个 顺便问下 的问题么?谢
    public class T {
    public static void main(String[] args) throws Exception {
    // 创建 100000 个 map
    map strA[] = new map[100000];
    long start = 0;
    long end = 0; // 先垃圾回收
    System.gc(); start = Runtime.getRuntime().freeMemory();
    for (int i = 0; i < 100000; i++)
    strA[i] = new map("",""); // 快要计算的时,再清理一次
    System.gc(); end = Runtime.getRuntime().freeMemory(); System.out.println("一个map对象占内存:" + (start - end) / 100000.0); }
    }
    class map {
    private String key; private String val; public map(String k, String v) {
    key = k;
    val = v;
    }}
      

  3.   

    我想吧l转换为map[]的, 
    为什么 map[] m = (map[])l.toArray();在运行的时候报错? 
    而     map[] temp = new map[]{}; 
          map[] m = l.toArray(temp);就没错。。 
    LinkedList里面的toArray(T[] a) 的a必须像上面的temp一样先声明么?
    可以这样:
    LinkedList<map> l = new LinkedList<map>();
    map[] m = l.toArray(new map[0]);