在最近的一次采访中,面试官问我这个问题:多少内存一类得到,如果没有静态方法或块,没有对象
如果没有对象的类创建,也没有静态方法或类中的块,只是一些实例变量;那个班会得到记忆吗?如果不是,那么这个类会在RAM中获得任何空间吗?
根据我的理解,如果静态直接实例化块或方法,但如果没有静态块或方法,则不会分配内存。
而且,由于我们还没有创建任何对象,因此,没有类的实例将于
所以我说没有内存将被分配。
是我对不对?请确认
我
在最近的一次采访中,面试官问我这个问题:多少内存一类得到,如果没有静态方法或块,没有对象
如果没有对象的类创建,也没有静态方法或类中的块,只是一些实例变量;那个班会得到记忆吗?如果不是,那么这个类会在RAM中获得任何空间吗?
根据我的理解,如果静态直接实例化块或方法,但如果没有静态块或方法,则不会分配内存。
而且,由于我们还没有创建任何对象,因此,没有类的实例将于
所以我说没有内存将被分配。
是我对不对?请确认
我
将该类获取内存?
程序中存在的所有东西都使用内存。
如果不是,该类会在RAM中获得任何空间吗?
RAM ==内存,所以如果没有=>不。
没有内存将被分配。
没有内存将分配给字段。有些东西需要记录该类已加载。它将有一个默认的构造函数(或至少一个构造函数),并且必须去某处。
所以我说没有记忆将被分配,是我吗?
如果您证明了您的答案,那么您可以采取任何方式。 Java开发人员通常只计算堆内存,因此“否”可能没有问题。
顺便尝试使用加载空类的一行来运行程序。您会发现大约有10,000个对象将被创建以达到该点。你可以真的争论任何数量的记忆。
在典型的JVM中,类按需加载。
在您的描述中,一切听起来好像这个类没有被程序的任何部分访问:没有静态访问,没有对象创建。这意味着这个类实际上不会消耗堆内存,至少如果这个类存在于它自己的文件中的话。
虽然它生活在.jar
文件中,但该文件通常映射到RAM中,但这并不是很昂贵。
谢谢,所以如果写了int i = 20;在Ram中它会得到4个字节的内存? –
这取决于。如果你自己找不到,请创建一个新问题。 –