【发布时间】:2014-10-27 10:13:04
【问题描述】:
在 Java 中,声明一个类级别的实例变量而不初始化它会消耗内存吗?
例如:如果我不使用i = 5; 初始化它,int i; 是否会使用任何内存?
详情:
我有一个巨大的超类,它扩展了许多不同的(差异不足以拥有自己的超类)子类。一些子类不使用超类声明的每一个原语。我可以简单地将这些原语保留为未初始化,并且只在必要的子类中初始化它们以节省内存吗?
【问题讨论】:
-
关于你的最后一段,看看structural design patterns,也许有什么可以帮助你的。根据您的用例,flyweight pattern 可能会引起您的兴趣。
-
享元模式是共享数据以避免为每次使用创造相同的价值。我要做的是避免创建不会使用的值。感谢您的链接。我会研究其他模式。
-
在 Stack Overflow 推出 6 年多之后,在 733987 个 Java 问题之后,这怎么不是重复的?
-
一个巨大的超类是一种设计味道,特别是如果许多派生类不使用成员。您可能需要考虑使用组合而不是继承。
-
当您似乎需要在 Java 中进行多重继承时,delegation 通常可以用来实现类似的结果,尽管不像继承那么自然/优雅。
标签: java memory-management initialization primitive