Java 使用Bloch'是否会对内存和性能造成影响;s构建器模式?

Java 使用Bloch'是否会对内存和性能造成影响;s构建器模式?,java,design-patterns,memory,performance,builder,Java,Design Patterns,Memory,Performance,Builder,与仅使用构造函数创建对象相比,内存和性能使用情况如何 这里的用法是创建一个集合或列表,其中可能包含超过百万个条目,我关心的是使用Bloch的Builder模式的开销。我过去用过它,但从未在这么大的范围内使用过 引用:,在中重印,摘自Joshua Bloch。您有一个附加的构建器对象,该对象在创建后被丢弃。因此,您可能会对内存使用和速度产生一些影响。但是Java虚拟机的优化能力非常强,尤其是服务器虚拟机(Java-Server),因此虚拟机可以完全优化构建器。因此,我的建议是,你应该衡量真正的影响

与仅使用构造函数创建对象相比,内存和性能使用情况如何

这里的用法是创建一个
集合
列表
,其中可能包含超过百万个条目,我关心的是使用Bloch的Builder模式的开销。我过去用过它,但从未在这么大的范围内使用过


引用:,在中重印,摘自Joshua Bloch。

您有一个附加的构建器对象,该对象在创建后被丢弃。因此,您可能会对内存使用和速度产生一些影响。但是Java虚拟机的优化能力非常强,尤其是服务器虚拟机(Java-Server),因此虚拟机可以完全优化构建器。因此,我的建议是,你应该衡量真正的影响(如果你总是关心性能的话),并决定影响是否太大。

很难从你最初的描述中看出,但是如果你关心的是将一个
集合
和一个~1000000个条目传递给一个构造函数,而不是传递给一个生成器,那么额外一个条目的成本就很高了(短期)对象几乎不值得讨论。

成本可以忽略不计,因为构建器引用可以在构建对象后立即进行垃圾收集


在任何情况下,创建1m额外对象的影响都应低于10s。

请添加Bloch的生成器模式链接(即原始Bloch的描述)你可以在有效的Java书籍中找到Bloch的生成器模式,或者@@chburd:我也注意到了google中的第一个链接,但我怀疑这是Bloch的原始描述。@垃圾神,谢谢你的链接我想他用生成器模式创建了数百万个对象。这意味着每一百万个对象和额外的临时对象builder-object。他可能只需要添加一个.clear()方法或其他东西,以便在每次迭代中清空其内容。+1,构建这是一个非常重要的测试,但我会这样做。虽然我无法控制JVM的使用,所以我一直在寻找通用性。事实上,即使是在普通的上网本或高级智能手机上,我也希望不到1秒。@sfussenger:是的,我在一个简单的我认为10秒应该涵盖所有情况,但我同意你的观点。这可能不是一个好的测试,因为JVM需要一段时间来预热和优化。代码在优化时会运行得稍慢一些。