我想知道这个问题的答案。给出一些背景信息:
我目前正用Java编写自己的国际象棋引擎(是的,我知道C ++会更快),我需要生成很多例如MoveOrder对象,表示从一个boardstate到另一个boardstate的路径。我很方便在类定义中有一些实例方法,当有大量这些对象时会影响程序的速度吗?我应该制作某种包含静态方法的Utility类来处理相同的功能吗?
答案 0 :(得分:1)
方法计数对单个对象的内存消耗没有影响。每个对象只包含一个标题,包括其类的地址和字段,而不是所有类方法。
答案 1 :(得分:0)
它是实例变量使用的总大小,而不是影响类实例占用空间的方法数。
答案 2 :(得分:0)
没有。该方法只存在一次。在C ++中,您可能听说过方法表。它不是每个对象表的方法。以不同的方式执行操作会浪费内存,因为一旦编译,方法就不会再发生变化。
如果你读到a Method (Oracle),那就说(强调我的):
提供有关类或接口上单个方法的信息和访问权。
而不是
“提供有关对象上单个方法的信息和访问权。”
但是,如果没有足够的RAM,许多对象将分配内存并且内存可能会被交换到磁盘,因此对象的数量会影响性能,但这不是由于这些方法。