gpt4 book ai didi

Android增长堆 fragment 案例

转载 作者:IT老高 更新时间:2023-10-28 22:17:20 26 4
gpt4 key购买 nike

我正在开发一个应用程序来从互联网上流式传输音乐...我的应用程序做了很多事情,它的结构是这样的:我有一个标签 View ,每个 View 都分配在内存中,所以每次我浏览标签时,我再次找到以前的状态(每个选项卡也可以打开一个 webview 来查找有关互联网上的歌曲、新闻等的信息).. 所有这些都会增加内存占用,但使应用程序非常用户友好......在注意避免内存泄漏之后Android指南,我试图查看堆占用,我发现我的应用程序分配了最大3.5MB的内存,分配的堆大小是4.5 - 4.6 MB......我正在使用模拟器......他们不是这样我想了很多,但有时我的应用程序会在 LogCat 中重新启动,并会出现一条奇怪的消息,例如

Grow heap ( frag case ) to 3.373 for 19764-byte allocation

这是什么?模拟器问题?或者是其他东西?我是否使用了太多内存?

提前感谢您的帮助:)

最佳答案

最大堆大小取决于设备(您可以通过调用 Runtime.getRuntime().maxMemory() 获得该值),但它可能在 32MB 左右。为了节省内存,Android 不会自动为每个应用程序分配最大内存。相反,它会等到应用程序需要更多内存,然后根据需要为其提供更多堆空间,直到达到最大值。我相信这就是您看到的 Grow heap 消息。

如果您进行大量内存分配和释放,您可能会遇到 fragment 问题。维基百科有一个不错的描述here ,但基本上意味着您可能拥有所需的可用内存,而不是全部在一个 block 中。因此需要增加堆。

所以要回答你的问题,这可能不是模拟器问题,它只是你的程序的性质,这听起来有点内存力。不过这也不是坏事。我不认为将 3-5MB 用于带有 webviews 的多个选项卡太多。

关于Android增长堆 fragment 案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7247049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com