Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 嵌套类占用更多内存空间?_Java_Memory Management_Nested Class - Fatal编程技术网

Java 嵌套类占用更多内存空间?

Java 嵌套类占用更多内存空间?,java,memory-management,nested-class,Java,Memory Management,Nested Class,我不太关心内存管理,嵌套类是否不好,为主类创建实例时是否需要更多内存,例如: 案例1: A=newa()在其他文件中,还将包含类B结构和类B的实例 案例2: 在本例中,在另一个文件中,将有一个实例A,在一个实例B中 那么,案例1需要更多的记忆,还是我的想法错了?如果我错了,请任何人向我解释这是如何工作的 “我们应该忘记小效率,比如说97%的时间:过早优化是万恶之源”——Donald Knuth 第一:不,嵌套类并不是普遍“坏”的。就像编程中的几乎所有其他东西一样——它们有时间和地点 第二:是-正

我不太关心内存管理,嵌套类是否不好,为主类创建实例时是否需要更多内存,例如:

案例1:

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
}