【问题标题】:Is it bad to have many references to the same object? [closed]对同一个对象有很多引用是不是很糟糕? [关闭]
【发布时间】:2014-07-25 18:27:58
【问题描述】:

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

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

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

【问题讨论】:

  • 不,这没有什么问题。
  • 你有没有客观的发现与之相关的问题?
  • 为什么引用总是占用4字节的内存,真的是固定的???
  • @Scott-I create a certain class +100 times 是什么意思?在同一个项目中???
  • 不,如果没有更好的方法来构建您的应用程序,那么对同一个对象有多个引用也不错。但请务必检查是否有更好的方法来构建事物以避免不必要地这样做。内存量可能很小,但这可能表明您的结构没有想象的那么优雅。

标签: java jvm


【解决方案1】:

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

每个类都有该类的每个实例对该类的引用。每个类加载器都有来自每个类的引用。空字符串通常是被引用次数最多的对象,常见的引用数以万计。

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

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

【讨论】:

  • 是的,通常越简单越好。
  • @HotLicks 有时有一个很好的理由让事情变得更复杂,但没有更多信息,目标应该是尽可能简单,稍后再回来,让它变得更简单。
【解决方案2】:

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

从性能/资源利用率的角度来看,引用比创建和销毁对象更有效。许多小对象可以使堆碎片化并对内存管理器/垃圾收集器征税。这就是为什么将不可变对象设为单例通常是值得的。在 Java 中构建即使是很小的对象也比使用引用更昂贵。

大多数程序不会注意到任何显着差异,但有些会。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-08
    • 2013-04-17
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    相关资源
    最近更新 更多