对同一个对象进行多次引用是不是很糟糕?

时间:2014-07-25 18:27:59

标签: java jvm

考虑到这个问题,我不认为它会很糟糕,因为对象引用只占用4个字节的内存(在32位JVM中),但直觉上我觉得我在做某事当我对同一个对象有很多(+100)引用时出错了。这通常发生在我创建某个类+100次并且每个都需要保留引用时。

我知道在大多数情况下我可以重新设计我的代码以避免这种情况,但有时更容易在每个对象中保留引用。

无论如何,对同一个对象进行多次引用是不是很糟糕?

2 个答案:

答案 0 :(得分:1)

对同一个对象有很多引用是不可避免的,但没有弊端恕我直言。

每个类都从该类的每个实例引用它。每个类加载器都有一个来自每个类的引用。空字符串通常是引用最多的对象,其中有数万个引用是常见的。

  

我知道在大多数情况下我可以重新设计我的代码以避免这种情况,但有时更容易在每个对象中保留引用。

我建议你做你认为最简单,最清晰的事情,这将是最容易维护的。

答案 1 :(得分:1)

  

考虑到这个问题,我不认为它会不好,因为对象引用只占用4个字节的内存(在32位JVM中),但直觉上我觉得我做错了许多(+100)对同一对象的引用。

从性能/资源利用率的角度来看,引用是比创建和销毁对象更有效率的。很多ittybitty对象可以分散堆并对内存管理器/垃圾收集器征税。这就是为什么通常值得努力制作不可变对象的单例。在Java中构建甚至小的对象比使用引用更昂贵。

大多数程序都不会发现任何重大差异,但有些会发现。

  

这通常发生在我创建某个类+100次并且每个都需要保留引用时。

如果类的每个实例都引用该对象,请使用静态变量而不是实例变量来存储引用。您可以使用静态初始化程序来分配它,或者创建一个工厂方法来实例化该类的对象,并让工厂方法在第一次调用时分配引用的对象。