【问题标题】:Should I Leave Methods I Don't Use In a Class?我应该离开我不在课堂上使用的方法吗?
【发布时间】:2014-12-28 03:21:25
【问题描述】:

我有一个类在性能密集型程序中被大量使用(> 400,000 个实例)。将这些方法留在类中会严重影响每个对象的内存使用,还是真的不重要?

【问题讨论】:

  • 这些消息是什么?
  • 未使用的方法不会以任何有意义的方式影响您的运行时性能。当然,删除它们可能会带来其他好处(维护成本最低的代码是不存在的代码)。
  • 在合理范围内,多余的未使用方法无效。
  • 类是公共 API 的一部分吗?方法是public 还是protected

标签: java performance class memory memory-management


【解决方案1】:

加载类所消耗的内存将对应于代码的大小,但是,不会为类的每个实例复制代码。

实例只需要与实例属性一样多的内存 + 管理对象实例本身的一些开销。

如前所述,有维护成本等等。通常最好删除死代码,但是更改也有成本。考虑这些方面。

【讨论】:

    【解决方案2】:

    类在第一次使用时被加载到内存中,正常情况下只加载一次。事实上,Classequals 方法写成==,这意味着Java 期望它是完全相同的对象。

    这与类 instances 不同,后者在实例化时分配内存并在垃圾收集时释放内存。

    如果你的班级有未使用的字段,更令人担忧的是。每个字段都会消耗少量内存,但乘以活动实例的数量会占用大量内存。即使该字段被初始化为null,也是如此。如果该字段被初始化为一个新对象,那么这可能会消耗更多内存,具体取决于对象的大小。

    【讨论】:

      猜你喜欢
      • 2018-07-05
      • 2011-01-25
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多