在最近的一次面试中,面试官问了我这个问题:
如果没有为类创建对象,并且类中没有静态方法或静态 block ,只有一些实例变量;该类会获得内存吗?如果不是,该类会在 RAM 中获得任何空间吗?
根据我的理解,如果static直接实例化 block 或方法,但如果没有static block 或方法,则不会分配内存。
此外,由于我们还没有创建任何对象,因此不会发生类的实例化
所以我说不会分配内存。
我说得对吗?请确认
我
最佳答案
will that class get memory?
程序中存在的所有内容都使用内存。
if no, will that class get any space in RAM?
RAM == 内存,所以如果没有 => 没有。
no memory will be allocated.
不会为字段分配内存。需要有一些东西来记录该类已加载。它将有一个默认构造函数(或至少一个构造函数),并且必须去某个地方。
So I said no memory will be allocated, was I right?
如果你证明你的答案是合理的,你可以以任何一种方式争论。 Java 开发人员通常只计算堆内存,因此“否”可能没问题。
顺便说一句,尝试运行一个程序,其中一行加载一个空类。您会发现大约已经创建了 10,000 个对象才能达到这一点。您确实可以争论任何数量的内存。
关于java - 如果没有静态方法或 block 并且没有对象,一个类会获得多少内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36812601/