What is the memory consumption of an object in Java?

前端 未结 12 2475
眼角桃花
眼角桃花 2020-11-22 03:20

Is the memory space consumed by one object with 100 attributes the same as that of 100 objects, with one attribute each?

How much memory is allocated for an object?<

12条回答
  •  离开以前
    2020-11-22 03:43

    The total used / free memory of an program can be obtained in the program via

    java.lang.Runtime.getRuntime();
    

    The runtime has several method which relates to the memory. The following coding example demonstrate its usage.

    package test;
    
     import java.util.ArrayList;
     import java.util.List;
    
     public class PerformanceTest {
         private static final long MEGABYTE = 1024L * 1024L;
    
         public static long bytesToMegabytes(long bytes) {
             return bytes / MEGABYTE;
         }
    
         public static void main(String[] args) {
             // I assume you will know how to create a object Person yourself...
             List < Person > list = new ArrayList < Person > ();
             for (int i = 0; i <= 100000; i++) {
                 list.add(new Person("Jim", "Knopf"));
             }
             // Get the Java runtime
             Runtime runtime = Runtime.getRuntime();
             // Run the garbage collector
             runtime.gc();
             // Calculate the used memory
             long memory = runtime.totalMemory() - runtime.freeMemory();
             System.out.println("Used memory is bytes: " + memory);
             System.out.println("Used memory is megabytes: " + bytesToMegabytes(memory));
         }
     }
    

提交回复
热议问题