Android:使用SharedPreference导致内存泄漏
我们的应用程序使用 SharedPreference 来保存数据。应用程序正在从服务器接收大约 1.5Mb 的数据。
解析数据后,我将其存储在 SharedPreference 中。但是保存操作在堆上产生了大约 2mb 的哈希图(我用内存分析工具检查过)。那么sharedPrefs是否使用堆(我不这么认为)或在内部存储时,编辑器是否未清除映射对象数据字符串? (在内存分析器上,数据显示为 HashMap,GC 根为 SharedPrefs 和 android.app.ContextImpl (Android 中的内部或内部类))
另外,使用 sqlite 或 SharedPref 哪个是更好的方法?因为有了sharedPref,应用程序运行得又快又好。我唯一的问题是内存泄漏。
Our Application is using SharedPreference to save data. The application is receiving around 1.5Mb data from server.
After parsing the data I am storing it in SharedPreference. But the save operation is causing around 2mb of Hashmaps on heap (I checked with a memory analyzer tool). So does sharedPrefs use a Heap (I dont think so) or internally while storing, is Editor not clearing the Map Object data Strings? (On Memory Analyzer, data is Shown as HashMap with GC root to SharedPrefs and android.app.ContextImpl (Internal or inner class in android))
Also, which is the better way, using sqlite or SharedPref? Because with sharedPref, the app is working fast and fine. My only problem is this memory leak.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,您可以将其存储到一个私有文件中,如果有多个条目,则可以使用分隔符或其他内容。
但是,如果您有很多条目,我想最好的方法是使用数据库。
下面的代码会将字符串保存到文件中:
Well, you could store it into a private file and use a delimiter or something else if there are more then one entry.
However if you have many entries the best way would be to use a database I guess.
This code below would save a string into a file: