【发布时间】:2018-08-14 09:47:00
【问题描述】:
在我的项目中没有保存或加载。每次登录都会创建一个新对象。
因此,从技术上讲,每个字段都好像是瞬态的。但如果我也将它们都命名为瞬态,即
private final Car car = new Car();
(即使每次登录都会创建包含此字段的对象)
改成
private transient final Car car = new Car();
这会对我的项目在内存使用或速度方面产生任何积极影响吗?
【问题讨论】:
-
transient 只是意味着它不会被内置的java序列化机制序列化
-
transient仅表明该字段不应由ObjectOutputStream序列化。据我所知,它对性能或内存使用没有其他影响。如果您的对象不是Serializable和/或您不使用对象输出流,那么设置transient将不起作用。 -
我认为你不应该像你那样想
transient。您应该考虑如果您曾经持久化包含car字段的对象实例会发生什么。目前没有保存或加载并不重要。默认情况下,我会省略transient关键字。还有一点警告:不要过早优化。许多优化会影响可读性/复杂性,因此会损害代码的可维护性。
标签: java oop memory memory-management field