【发布时间】:2011-11-24 13:04:36
【问题描述】:
我们的应用程序使用 SharedPreference 来保存数据。应用程序正在从服务器接收大约 1.5Mb 的数据。
解析数据后,我将其存储在 SharedPreference 中。但是保存操作导致堆上大约 2mb 的 Hashmaps(我用内存分析器工具检查过)。那么 sharedPrefs 是在存储时使用堆(我不这么认为)还是在内部使用,编辑器是否没有清除 Map Object 数据字符串? (在 Memory Analyzer 上,数据显示为 HashMap,GC 根指向 SharedPrefs 和 android.app.ContextImpl(android 中的内部或内部类))
另外,使用 sqlite 或 SharedPref 哪个更好?因为有了 sharedPref,应用程序运行得又快又好。我唯一的问题是内存泄漏。
【问题讨论】:
-
很可能对于大量数据,使用 sql 数据库会产生更快的结果并且会占用更少的内存,尤其是在数据经常更改的情况下。
-
sharedPreferences 将用作跨多次重新启动的小型存储位置。它对存储的大量数据反应不佳……速度也降低了……最好使用 SD 卡中的数据库或文件存储。
-
感谢我用 sql db 更改了我的代码
-
这个答案可以帮助您了解如何实施 -> stackoverflow.com/q/6364642/492918
标签: android sql memory-leaks sharedpreferences