【问题标题】:High ram usage and same process showing multiple times?高内存使用率和相同的进程显示多次?
【发布时间】:2019-10-14 14:06:04
【问题描述】:

我在 Android Studio 中制作了一个媒体播放器,它使用 Service 来控制播放。

现在一切正常,即使我的 logcat 显示在启动期间跳过了 123 帧,我也没有注意到任何延迟。

我在某处读到,如果这条消息不超过 跳过 300+ 帧,则可以忽略它,但现在我不太确定了,因为我现在读到即使跳过 1 帧也是如此很多。

我还将内存使用量与商店中的 mp3 播放器进行了比较,我注意到大多数媒体播放器的内存使用量都低于 10mb。

但是我的几乎超过了 50mb,我不知道为什么,但是如果您查看详细信息,您会发现有同名的进程和很多“sandboxed_processes” .

所以我的问题是,我的应用程序几乎消耗 50mb 内存是否可以,那些“sandboxed_processes”是什么意思。

【问题讨论】:

    标签: java android memory-management android-mediaplayer


    【解决方案1】:

    问题 1:

    这取决于您的应用程序正在使用和需要多少资源。您应该认真对待内存,并且应该尽可能少地使用内存。垃圾收集器将帮助您回收分配的内存,但您应该考虑您创建的任何对象实例的生命周期,以及它们的设计,以便最大限度地减少结构。最后但同样重要的是,Studio 允许您分析应用程序的内存分配,因此请使用它:)。

    问题 2:

    应用沙盒来自官方documentation

    Android 平台利用基于 Linux 用户的 保护以识别和隔离应用程序资源。这隔离了应用程序 并保护应用程序和系统免受恶意应用程序的侵害。 为此,Android 会为每个 Android 分配一个唯一的用户 ID (UID) 应用程序并在自己的进程中运行它。

    Android 使用此 UID 设置内核级应用程序沙箱。 内核在应用程序和系统之间强制执行安全性 通过标准 Linux 工具(例如用户和 分配给应用程序的组 ID。默认情况下,应用无法交互 彼此之间,并且对操作系统的访问受到限制。为了 例如,如果应用程序 A 试图做一些恶意的事情,例如 未经许可读取应用程序 B 的数据或拨打电话(其中 是一个单独的应用程序),那么操作系统可以防止 这种行为是因为应用程序 A 没有合适的用户 特权。沙盒简单、可审计,并且基于数十年的历史 UNIX 风格的用户分离进程和文件权限。

    因为应用沙箱在内核中,所以这个安全模型 扩展到本机代码和操作系统应用程序。所有的 内核之上的软件,如操作系统库, 应用程序框架、应用程序运行时和所有应用程序运行 在应用程序沙箱中。在某些平台上,开发人员 受限于特定的开发框架、API 集或 语言以增强安全性。在 Android 上,没有 对如何编写应用程序的限制 加强安全;在这方面,本机代码与沙盒一样 解释代码。

    【讨论】:

      猜你喜欢
      • 2019-05-21
      • 2012-05-09
      • 2020-08-14
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 2011-03-25
      • 2014-05-07
      相关资源
      最近更新 更多