Java 嵌套类占用更多内存空间?
我不太关心内存管理,嵌套类是否不好,为主类创建实例时是否需要更多内存,例如: 案例1:Java 嵌套类占用更多内存空间?,java,memory-management,nested-class,Java,Memory Management,Nested Class,我不太关心内存管理,嵌套类是否不好,为主类创建实例时是否需要更多内存,例如: 案例1: A=newa()在其他文件中,还将包含类B结构和类B的实例 案例2: 在本例中,在另一个文件中,将有一个实例A,在一个实例B中 那么,案例1需要更多的记忆,还是我的想法错了?如果我错了,请任何人向我解释这是如何工作的 “我们应该忘记小效率,比如说97%的时间:过早优化是万恶之源”——Donald Knuth 第一:不,嵌套类并不是普遍“坏”的。就像编程中的几乎所有其他东西一样——它们有时间和地点 第二:是-正
A=newa()
在其他文件中,还将包含类B结构和类B的实例
案例2:
在本例中,在另一个文件中,将有一个实例A,在一个实例B中
那么,案例1需要更多的记忆,还是我的想法错了?如果我错了,请任何人向我解释这是如何工作的
“我们应该忘记小效率,比如说97%的时间:过早优化是万恶之源”——Donald Knuth
第一:不,嵌套类并不是普遍“坏”的。就像编程中的几乎所有其他东西一样——它们有时间和地点
第二:是-正如您所提到的,非静态内部类维护对其外部类的隐式引用,因此如果内部类的实例被强引用,那么外部实例也被强引用。这意味着要稍微多使用一些内存。但是:
第三(也是最重要的):关键词是“轻微”。这种考虑相当于克努斯所说的“小效率”之一不要让次要的性能问题驱动程序的架构。专注于用干净、组织良好的架构编写清晰、可读的程序:在许多情况下,使用嵌套类可以创建更清晰的组织—如果您的是其中之一,然后使用嵌套类:在更清晰的体系结构和内存使用量的微小增加之间进行权衡,这是您每次都要考虑的。如果性能成为一个问题,那么只要您的总体架构是可靠的,您就能够进行优化。因此,请关注该体系结构
(另外,这样编程更有趣:)你在说什么编程语言?请相应地标记问题。@MattBall Java。因为其他语言是不同的?不要过于复杂化自己。如果有差别的话,差别是微不足道的。谢谢!我刚刚读到过关于过早优化的文章,我不知道它的存在。
class A
{
class B
{
}
int main()
{
B b=new B();
}
}
class A
{
int main()
{
B b=new B();
}
}
class B
{
//something
}