我有一个项目的arraylist,其中只有十个变量。但这些项目有很多代码,我想添加更多。我很好奇这将如何影响我的结构的大小。我的直觉告诉我每个人都有一个堆栈,但随着参数的传递和东西,我可能不认为我不确定。那么大致只是代码添加到我的数据结构中了多少?
答案 0 :(得分:10)
代码不会增加您的结构大小。
答案 1 :(得分:3)
与类关联的代码通常不会按实例重复,因此添加代码不应影响arraylist的大小。
答案 2 :(得分:3)
即使您将代码放在与数据相同的花括号中,编译器也会将其分开并将其放在不同的内存部分中。
这样,您只需要一份代码副本 - 没有必要为使用它的每个项目制作新副本。
只有在非常大的项目中,编译代码的实际大小才会成为问题;通常,它不比源文本大。在小程序中,它通常是几百K或一个兆或两个最多。在现代机器上不值得担心。
答案 3 :(得分:2)
对象实例的大小(大部分)是其数据成员的总和。函数成员不是按实例存储的,并且对实例大小没有影响。
您的程序每个线程只有一个堆栈。调用函数时,为该函数的每个参数和变量保留堆栈内存,并在返回时释放。
如果在没有new的函数中实例化了对象,则将其存储在堆栈中。如果使用new,则只有一个引用存储在堆栈中,并且实例本身存储在堆上。
:)
答案 4 :(得分:1)
代码不存储在堆上。
无论您创建多少个对象,您都只能将代码放在一个位置。
答案 5 :(得分:1)
对象工作的类成员函数以不同方式存储,它对对象的大小没有影响。其中类中的数据成员将成为对象的一部分,如果更改变量的类型,对象大小将会更改。
例如:
class Test
{
1. member functions
//it does not matter how many functions you have, this section does not contribute
// to object size
2. member variables
//this contributes to the object size, define an int or double etc will change the object size
}
答案 6 :(得分:1)
每个对象都没有自己的堆栈。堆栈是每个线程/进程,而不是每个对象。