普通类,抽象类和具有相同功能的接口,哪一个具有最小的内存大小?

时间:2018-05-05 17:38:14

标签: java

我想比较普通类,抽象类和接口的大小。它们具有相同的1个名称属性和1个callMe方法。关于他们的细节在这里:

正常班级

public class Student {
    public final String name = "";

    public String callMe() {
        return null;
    }
}

抽象类

public abstract class AStudent {
    public final String name = "";

    public abstract String callMe();
}

界面

public interface IStudent {
    public final String name = "";

    public String callMe();
}

内存大小最小的是什么?如果可能的话,请你按顺序排序。

我认为结果可能是(从最小到最大):接口,抽象类,普通类。是吗?

1 个答案:

答案 0 :(得分:0)

我不确定你的“大小”是什么意思。您可以使用javap工具查看已编译的字节代码。对于这两个类,接口$response = array(); $response["success"] = "yes"; echo json_encode($response); 向我展示了这些大小:

  • javap -sysinfo:446个字节
  • Student:399字节
  • AStudent:215字节

但这只是字节码的静态大小,而不是运行时所需的内存。只有IStudent可以实例化,抽象类或接口在运行时不能独立存在。