如果我有很多单个类的实例,那么类本身的大小(代码行数,方法数)是否对所需的内存有任何影响?
我想知道将一些较少使用的方法移动到其他地方是否有利于内存使用和性能。
答案 0 :(得分:3)
有些人会讨厌这个建议;但是如果您的类中有方法/属性并非特定于实例,请将它们设为静态方法/属性。非静态类方法/属性应该只是特定于实例的那些。
一般来说,这对内存使用量的帮助不大(使静态属性有助于内存)。单个实例仅保存非静态类属性,并且类方法仅在内存中保存一次,无论实例多少。静态属性保存在全局级别(不要与全局工作区混淆),因此无论有多少个实例,它们都只保存在内存中一次。
答案 1 :(得分:3)
编译器在include()
编辑时只会读取一次类定义。如果实例化大量类实例,方法的数量和代码行数不应对所使用的内存量产生任何有意义的影响。但是,成员变量的数量当然会影响内存使用。
答案 2 :(得分:2)
对象的内存使用量与数组的内存使用量相同。一个类吃了十分多的字节。但除非你一次创建几千个对象(在这种情况下你真正的问题是另一个),否则这是不可测量的。
在幕后,您始终拥有类属性的字典,并且类定义具有现有方法的关联字典。后者在任何一种情况下都存在,只是添加另一个方法将只添加几个字节。实际上,它与在主函数字典中注册全局函数一样多。
所以不,避免类声明中的方法不会节省内存。并且这是不明智的,因为对象本身不会因此而使用更多内存。方法列表与对象实例无关。