java - 如果没有静态方法或 block 并且没有对象,一个类会获得多少内存

标签 java

在最近的一次面试中,面试官问了我这个问题:

如果没有为类创建对象,并且类中没有静态方法或静态 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/

相关文章:

java - java中的 'Float a = 3f'和 'Float a = 3.0'有什么区别?

具有泛型和泛型集合的 Java 重载方法

java - 测试 Dropwizard 'Application' 类

java - 无法使 EditText 成为多行

java - Vertx - 使用 OAuth2 保护路由时缺少 GET 参数

java - 如何在运行 Java 代码的 Visual Studio Code 上隐藏不需要的日志消息

java - 这与只返回 new System.currentTimeMillis() 有什么不同吗?

java - 文本未读入变量

java - 无法使用 Spring Boot 将日期时间保存到 MongoDB

java - 在需要身份验证但不返回 407 的代理后面打开 http 连接