Java = getter/setter = 这是否会增加运行时和访问时"object size"(CPU 周期?



我需要编写一个ajax应用程序,在服务器端(用Java实现(将创建数百万个小对象并将其保存在内存中。 通常我对任何对象使用 beanstyle(带有 getter/setter(。

我的问题:在运行时,为实例化对象使用getter/setter方法与不使用它们并直接访问字段/成员是否有区别(关于内存使用情况和访问CPU时间(? 例如,如果使用 getter/setter 使每个方法和实例的对象变大 5 字节,那么这将大大增加数百万个 ob 对象。与访问 getter 与直接访问有关 CPU 周期的成员/变量相同。

public String myvartoaccess;
vs
private String myvartoaccces;
public String getMyvartoaccess();

非常感谢!延斯

getter 和 setter 将增加少量的大小;但是,单个对象的大小不会受到影响。 因此,无论您有单个对象还是一万个对象,该方法的内存开销都会恰好添加一次。

至于CPU开销,会有很小的开销;但是,这应该经过优化并且可以忽略不计。

没有区别。JVM将优化getter,就好像它是一个字段读取一样。

Getter 和 setter 不会影响内存使用量。 getter/setter 的方法实现与只有一个的Class一起存储(在给定的类加载器中(。 实例仅存储对象的状态。

关于性能,我怀疑称呼简单的getter/setter会慢得多。 我肯定会首先使用getter和setter来实现,然后如果你发现它太慢,你可能会取消它们。 毕竟,过早的优化是万恶之源。

Getter 和 setter 方法不应使对象变大,而只应使表示这些对象的类变大。使用getter和setter方法对你的性能不太可能重要,特别是因为JVM应该优化它。如果您担心性能或内存,则应加载测试并分析您的应用程序。很可能你会在其他地方发现问题,我真的不会太担心这部分。

最新更新