android - 带有单个 WebView 的 Android Studio 简单“电视”应用程序在长时间后崩溃(分析器显示负分配的内存?)
问题描述
所以我有一个超级简单的应用程序,它只有一个连接到我们的主机页面并充当“电视”的 WebView。在检查内存泄漏后,我在我的 Amazon Fire Stick 上运行了这个应用程序很长一段时间,但无论在大约 8-9 小时后,它都会在控制台上无一例外地崩溃。我如何检查内存泄漏:
- LeakCanary 没有检测到任何泄漏。
- 随着时间的推移观察内存分析器,我发现使用的总内存始终平均为 400MB,即使在 8 小时标记时也是如此。
- 与更糟糕的旧版本程序相比(它有很多不相关的代码并且是一个较旧的项目),LeakCanary DID 检测到完全相同代码的泄漏,并且分析器确实慢慢增加了使用的总内存。这使我相信,隔离所有必要的代码并将其移至新项目可以解决部分问题。
现在,真正奇怪的是,即使分析器中的分配内存波动,它也在减少。实际上是负数。到 8 小时大关时,我看到它的平均值约为 -40000。为什么分配的数字是负数?
最后,这是我在崩溃前看到的反复出现的可疑控制台日志,暗示它确实是与内存相关的崩溃:
I/Kernel: [126985.795618].(0)[3041:RenderThread]lowmemorykiller: Killing 'VMetricsProcess' (29681), adj 1, score_adj 58,
[126985.795618] to free 20124kB on behalf of 'RenderThread' (3041) because
[126985.795618] cache 40244kB is below limit 40960kB for oom_score_adj 58
[126985.795618] Free memory is 0kB above reserved
任何帮助将不胜感激,因为我长期以来一直在努力解决这个错误。
解决方案
推荐阅读
- sql-server - SSIS write dynamic results set variable to MSSQL table
- jquery - JQuery ajax url 路径(相对或绝对什么?)
- wordpress - 如何在 WordPress 用户中按名字和/或姓氏进行搜索?
- java - cucumber-testng 4.0 并行执行默认为 10 始终
- javascript - 在 react redux 的操作创建者中返回带有承诺的调度
- bash - AWK 中的字符串操作
- python - 两个DataFrame中每条记录之间的最近记录和对应距离
- python - 显示列表中每个字符串的索引
- javascript - 如何在 ms-word 列表中的每个单词后添加引号、逗号和空格?
- robotframework - 如何使用 Robot Framework 通过 JDBC 驱动程序连接到 MySQL 数据库