android - 为什么我要用 HPROF 查看器和分析器查找 "Duplicate Strings"?

标签 android android-studio heap-dump hprof

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

最佳答案

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

关于android - 为什么我要用 HPROF 查看器和分析器查找 "Duplicate Strings"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38119446/

相关文章:

android - 从 android 应用程序中的 OBD II 蓝牙适配器读取值

android - 如何在移动视觉API文本检测中减小相机源的大小

android - 翻译编辑器不显示来自库项目的字符串

java - Centos 64 位和 openjdk 7 上的堆转储错误

java - 以编程方式分析java堆转储文件

java - ActiveMQ 生产者生成堆转储

javascript - 如何在 Android 上使用 Javascript 填写表单?

java - 我将我的网站转换为应用程序,它在 AVD 中正常工作,但在我的手机中不起作用

android - 使用 Parse.com 动态填充后获取 Spinner Selection

android - 如何在 Android 中制作 Home_Screen 启动器选择器?