Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算分配对象所需的内存_Java - Fatal编程技术网

Java 计算分配对象所需的内存

Java 计算分配对象所需的内存,java,Java,我想比较一下内存使用情况,分配Calendar对象和Joda的DateTime对象 // How much memory required to allocate 100 Calendar objects? for (int i = 0; i < 100; i++) { Calendar c = Calendar.getInstance(); l = l + c.getTimeInMillis(); CalendarList.add(c); } // How mu

我想比较一下内存使用情况,分配Calendar对象和Joda的DateTime对象

// How much memory required to allocate 100 Calendar objects?
for (int i = 0; i < 100; i++) {
    Calendar c = Calendar.getInstance();
    l = l + c.getTimeInMillis();
    CalendarList.add(c);
}

// How much memory required to allocate Joda TimeDate objects?
for (int i = 0; i < 100; i++) {
    DateTime dateTime = new DateTime();
    l = l + dateTime.getMillis();
    DateTimeList.add(dateTime);
}
//分配100个日历对象需要多少内存?
对于(int i=0;i<100;i++){
Calendar c=Calendar.getInstance();
l=l+c.getTimeInMillis();
日历列表。添加(c);
}
//分配Joda TimeDate对象需要多少内存?
对于(int i=0;i<100;i++){
DateTime DateTime=新的DateTime();
l=l+dateTime.getMillis();
DateTimeList.add(日期时间);
}


我可以知道我可以添加一些代码来测量吗?

您可以使用该工具,在那里您可以看到哪些对象占用了哪些内存。我不认为有一个“代码内”的解决方案在所有情况下都是正确的,只需要几行代码

您可以查看以下内容

使用工具获取内存使用提示:

public class MemUsage {

    public static void main(String[] args) {
        Instrumentation instr = InstrumentationAgent.getInstrumentation();
        if (instr == null) {
            System.err.println("No Instrumentation, use the VM option \"-javaagent:Instrumentation.jar\"");
            return;
        }
        System.out.println();
        System.out.println("an implementation-specific approximation of the amount of storage");
        System.out.println("Calendar = " + instr.getObjectSize(Calendar.getInstance()));
        System.out.println();
    }
}
其他选择:但我从未使用过