【问题标题】:Have a class with Static members有一个带有静态成员的类
【发布时间】:2011-06-08 14:48:08
【问题描述】:

我创建了一个类,其中包含 ~12 个静态成员和 2 个存储了 ~1500 个整数的数组,因此每当我在编码时需要它们时,我都会调用该类并获取我想要的成员。
我想知道这是否是一件坏事......那些静态成员是否一直留在内存中?拥有 2 个具有 ~1500 个整数的静态数组是一件坏事吗?
我问这些问题是因为我的应用程序使用了 22mb 的 RAM!这很多,并认为这可能是一个原因,那么拥有这个静态类可以成为所有这些 ram 的原因吗?有没有更好的方法来处理这个?谢谢。

【问题讨论】:

  • 尤其是Android,你应该避免使用静态字段。它本质上是全局状态。
  • 这2个1500个整数的数组代表什么? (它们可能不是您的应用占用 22MB 的原因,但它们会影响大小)

标签: java android class performance static-members


【解决方案1】:

如果我要存储这么多信息,我会把它放在 SQLite 数据库中。

【讨论】:

    【解决方案2】:

    22Mb 的 RAM 太大了,您的应用肯定会在操作系统版本较低的设备上崩溃。我看不到在内存中存储 1500 个整数的原因,您可以尝试将它们存储在 XML 中并在需要时加载它们。检查此链接以了解如何在 XML 文件中存储值:Providing Resources

    【讨论】:

      【解决方案3】:

      类的静态成员在程序执行的整个过程中都在内存中,是的,它们一直都在内存中,这就是您可以随时访问它们的方式。我不能真正回答你关于数组的问题,因为你没有发布很多关于你的项目的信息,根据你需要做的事情,这可能是一个好主意,也可能不是一个好主意。

      【讨论】:

        【解决方案4】:

        奥马尔,

         First of all. Why do you have to use array with 1500 integers in it when clearly you have better techniques to store data. Like Egor mentioned, you can use XML as well, but then, you have to choose the right technology in that as well since DOM will load everything in memory and you'll end up in the same situation.
        

        最好的方法是将所有这些信息存储在数据库中,并随时检索适当的数据。此外,仅在需要时才使用静态成员(例如使用常量),这是一种很好的做法。

        【讨论】:

          【解决方案5】:

          2 个 1500 个整数的数组,不会占用最多 22 MB 的空间。您的应用程序有问题。这样一个数组只需要不到 50KB,所以 2 个数组应该在 100KB 左右。那么其他的静态成员是什么?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-10-20
            • 1970-01-01
            • 1970-01-01
            • 2014-09-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多