【问题标题】:Unexpected error while processing hprof file: null处理 hprof 文件时出现意外错误:null
【发布时间】:2015-12-08 08:54:18
【问题描述】:

我在特定设备上遇到了巨大的内存问题,其中大量内存是从无处分配的。我正在尝试进行 heapdump 以确定分配内存的内容,但是当我尝试打开 heapdump 文件时,Android Studio 中出现错误:

HprofView - Unexpected error while processing hprof file: null

我已经进行了一些网络搜索,但据我所知,没有任何关于此错误的引用。我只需要获取堆转储的帮助,我可以从那里修复我的应用程序。

编辑:我尝试转换转储文件,但它给了我另一个错误:

Convert Android Java Heap Dump - Unexpected error while converting heap dump: ERROR: read 16710959 of 33177623 bytes

【问题讨论】:

  • 我在装有 Android 5.0 的 Nexus 6 上也是如此,只有一个已启动的应用程序消耗接近 170Mb我错了
  • 处理同样的问题。你找到解决方案了吗?
  • @ryye 不幸的是,不,我没有解决这个问题。我最终修复了我的应用程序中的底层内存问题,所以从他们开始我就不必处理这个问题了。我有点希望 AS 开发团队中的某个人能看到这一点并为此做点什么。不幸的是,它没有引起任何关注。

标签: android android-studio


【解决方案1】:

我无法给出明确的答案,但根据我的经验,当应用程序接近其内存使用限制时似乎会发生这种情况。当您尝试调试 OutOfMemoryError 时,这显然不理想!

我可以建议解决这个问题的 2 件事:

  1. 尝试使用不同的设备/模拟器。例如我发现这个问题在我的三星 S5 上很常见,但在我的 Nexus 4 上发生的频率较低。
  2. 在应用程序耗尽内存之前暂停应用程序,然后在此时获取堆转储。这并不理想,但随着时间的推移,内存泄漏往往会导致问题,而不是一次全部发生,因此您应该仍然能够诊断出泄漏。

【讨论】:

  • 不幸的是,这对解决问题没有帮助。根据我提供的错误消息,我能够获取堆转储,但 Android Studio 无法显示它们。
  • 此外,据我所知,我在分配方面遇到的问题不是内存泄漏。 这只发生在特定设备上,不到一秒就分配了 400MB。它非常具体地是 400MB,而且从来没有更多或更少。分配似乎发生在活动调用之间,在startActivity() 之后和onCreate() 之前。
  • 你得到一个带有 .hprof 后缀的文件,但我不认为它是一个有效的堆转储。我认为它在捕获堆转储时内存不足。我从来没有听说过你描述的问题,但你有我的同情!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2014-01-10
  • 2011-09-07
  • 1970-01-01
相关资源
最近更新 更多