为什么我要在HPROF Viewer和Analyzer中找到"Duplicate Strings"?

kal*_*lik 8 android hprof heap-dump android-studio

使用Android内存监视器,特别是其"转储Java堆"功能,我目前正在寻找我的应用程序内存泄漏.在Android Studio的转储/ HPROF视图的左侧,有一个选项可以打开"分析器任务",您可以告诉机器"检测泄漏的活动"和"查找重复的字符串".我对后一种选择感到困惑.它做了什么以及它如何有用?它必须比仅仅帮助我们这些笨拙的开发人员更复杂,他们将相同的字符串两次放入他们的资源文件夹中.这里的文档不是很有帮助(如果我的搜索足够彻底),因为它们只表明它在"目标程序具有重复值的字符串"的情况下有所帮助.情况会是什么时候?

SGi*_*ill 5

据我所知,这只是指出内存中重复的字符串。但是,这不仅适用于查找相同字符串已输入多个资源的情况。例如,由于字符串在 Java 中是不可变的,因此您很容易得到比您最初意识到的更多的字符串实例。如果您的应用程序有大量字符串连接代码但不使用 StringBuilder,或者如果您的应用程序进行任何字符串/文本处理,则很容易以意外的大量字符串占用空间而告终。但相反,为了获得一些空间(一旦你能看到问题所在),它通常是一个相对容易的优化。所以你可以说这个任务更多是关于内存“优化”,而不是发现泄漏。