将大量数据保存为静态类是否效率低下?

时间:2016-05-28 01:17:20

标签: java android

我目前正在开发一款Android应用程序,它可以作为视频游戏的参考(特定的口袋妖怪),我想知道是否存在保存所有数据的任何内在错误里面的静态类?这个数据集是固定的,所以除了新游戏出来之外,它不会涉及很多更新。我也不想将数据保存在服务器上,因为我希望尽可能减少加载时间。

1 个答案:

答案 0 :(得分:4)

是的,效率很低,但这是否重要取决于您所谈论的数据量。

效率低下的原因如下:

  • 如果您将数据硬连接到static变量的初始化器中,那么所有数据都需要在类加载时加载(例如进入字符串池),并且需要保留在那里应用程序的生命周期。没有机会 1 只保留(仍然)需要的东西。

  • 第二个问题是,在类的静态初始化方法中,您可能还有一些非常重要的代码。

实际上不需要的“东西”的长期内存使用会影响整体效率。 GC有更多要扫描的对象,更多要查看的位置。由于GC循环后的可用空间较少,因此必须更频繁地运行。

还存在将数据嵌入代码中的问题可能不灵活。更改数据的唯一方法是重建/重新部署。就开发时间而言,这可能效率低下。

有各种选择; E.H.属性文件,首选项,轻量级数据库。其中一些将提供即使不是更好的负载时间性能;例如通过延迟加载。

,如果不需要,所有这些都可以允许加载的数据被丢弃......然后重新加载。

1 - 即使您要将null分配给静态变量,仍然可能会隐藏引用与类本身关联的字符串池中的对象。

相关问题