使用Android内存监视器,尤其是其“转储Java堆”功能,我目前正在查找应用程序中的内存泄漏。在Android Studio的转储/HPROF View 的左侧,有一个选项可以打开“分析器任务”,您可以在其中告诉计算机“检测泄漏的 Activity ”和“查找重复的字符串”。我对后一种选择感到困惑。它有什么作用,有什么用?它不仅比帮助那些笨拙的开发人员更加复杂,这些开发人员将相同的字符串两次放入资源文件夹中。 docs在这里不是很有帮助(如果我的搜索足够彻底的话),因为它们仅声明在“目标程序具有重复值的字符串”的情况下才有帮助。什么时候会是这种情况?
最佳答案
据我所知,这只是指出内存中重复的字符串。但是,这不仅对查找将相同字符串输入多个资源中的情况有用。例如,作为Java中的Strings are immutable,您很容易最终得到比最初可能实现的更多的字符串实例。如果您的应用程序具有很多字符串连接代码,但不使用StringBuilder,或者如果您的应用程序执行任何字符串/文本处理,则它很容易以意外的大量字符串占用空间而告终。但是相反,通常可以很容易地进行优化,以获取一些空间(一旦您知道问题出在哪里)。因此,您可以说此任务更多是关于内存“优化”的,而不是查找泄漏。