我为什么要找到" Duplicate Strings"使用HPROF Viewer和Analyzer?

时间:2016-06-30 09:44:32

标签: android android-studio heap-dump hprof

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

1 个答案:

答案 0 :(得分:4)

据我所知,这只是指出了内存中重复的字符串。但是,这不仅仅是查找已将相同字符串输入到多个资源的情况。例如,作为Java中的Strings are immutable,您可以轻松地获得比您最初意识到的更多字符串实例。如果您的应用程序有很多字符串连接代码但不使用StringBuilder,或者如果您的应用程序执行任何字符串/文本处理,则很容易以字符串占用意外的大量空间。但相反,它往往是一个相对容易的优化,以获得一些空间(一旦你可以看到问题是什么)。所以你可以说这个任务更多的是关于内存'优化',而不是找到泄漏。