【问题标题】:Android static class vs non-static class memory performanceAndroid 静态类 vs 非静态类内存性能
【发布时间】:2013-11-04 06:17:07
【问题描述】:

我首先创建了一个静态类,这个类不保持状态(不保留上下文或任何变量)只是一个函数列表。 但是这个类在应用中不是很常用,所以我决定让这个类可以实例化。

为什么?

因为我认为可实例化的类会使用更少的内存,因为它在整个应用程序生命周期中都不可用。

是这样吗?

静态类比非静态类使用更多内存?

谢谢

【问题讨论】:

  • “静态类”不是标准术语。 “静态类”是什么意思?无论如何,答案可能是“不,没有区别”。

标签: java android performance memory


【解决方案1】:

我认为您误解了课程的运作方式。在应用程序的整个生命周期中,任何类型的类都是“可用的”。用于类本身(方法等)的内存与 instances 使用的内存非常不同。除非你真的创建一个类的实例,否则它是无关紧要的。甚至静态类也可以被实例化——只是它们不维护对封闭类实例的隐式引用。

如果您的类实际上不需要隐式引用(即它不使用它),则将其设为静态嵌套类 - 或将其作为顶级类拉出。 (嵌套类有时会很痛苦——顶级类的规则更简单。)

【讨论】:

    【解决方案2】:

    这样的静态类不会比非静态类使用更多的内存。所有类在应用程序中始终可用 - 您始终可以使用静态类或创建非静态类的实例。

    如果您的类中只有方法(属于辅助方法类型),则静态类使用起来更方便(无需创建实例)并且不会影响您的内存使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      相关资源
      最近更新 更多