gpt4 book ai didi

java - 每个唯一不可变一个实例的设计模式是否被认为是邪恶的?

转载 作者:行者123 更新时间:2023-11-30 04:56:52 24 4
gpt4 key购买 nike

我正在阅读关于高效 Java 的一章,其中讨论了仅保留不可变对象(immutable对象)的一个​​实例的优点,以便我们可以进行对象身份比较 x == y而不是比较身份值。

此外,像 java.awt.RenderingHints.Key 这样的 POJO经常使用每个唯一不可变一个实例的设计模式:

Instances of this class are immutable and unique which means that tests for matches can be made using the == operator instead of the more expensive equals() method.

我可以理解这种方法的速度提升,

但是这种设计模式最终不会导致内存泄漏吗?

最佳答案

是的,它可能会导致内存增长(如果是故意行为,则不是泄漏)。是否会取决于唯一性契约是如何指定的。例如,如果将这些对象之一序列化到磁盘,退出它存在的范围,然后将其从磁盘反序列化回来,则会发生以下两种情况之一:要么获得相同的对象,要么获得不同的对象。如果你得到相同的对象,那么在 JVM 生命周期中使用的每个对象都需要保留,并且你将会有内存增长。如果你得到一个不同的对象,那么这些对象只需要在存在对它们的引用时存在,并且不会有内存增长。

关于java - 每个唯一不可变一个实例的设计模式是否被认为是邪恶的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com