高内存使用率和同一过程显示多次?

时间:2019-05-29 02:54:14

标签: java android memory-management android-mediaplayer

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

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

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

我还比较了商店中的mp3播放器和ram的使用情况,发现大多数媒体播放器的内存使用率都低于10mb。

但是我的文件几乎超过了 50mb ,我不知道为什么,但是如果您看到详细信息,您会发现有些进程具有相同的名称和很多' sandboxed_processes '

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

enter image description here

1 个答案:

答案 0 :(得分:0)

问题1:

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

问题2:

来自官方documentation

应用沙箱

  

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

     

Android使用此UID设置内核级应用程序沙箱。   内核在以下位置加强了应用程序与系统之间的安全性:   通过标准Linux设施(例如用户和   分配给应用程序的组ID。默认情况下,应用无法互动   彼此之间并且对操作系统的访问受到限制。对于   例如,如果应用程序A尝试执行恶意操作,例如   读取应用程序B的数据或未经许可拨打电话(   是一个单独的应用程序),则操作系统可以防止   此行为是因为应用程序A没有适当的用户   特权。沙盒非常简单,可审核,并且基于数十年的历史   UNIX风格的用户将进程和文件权限分开。

     

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