Android 安卓活页夹

Android 安卓活页夹,android,performance,android-binder,Android,Performance,Android Binder,一个应用程序有大约100个本地绑定实例是正常的吗?这个数字上升到了那个高度,但从未下降到最初的水平。有这么多活页夹的情况可能是什么?(作者在询问使用adb shell dumpsys meminfo列出的本地活页夹数量时重写)。我无法回答这是否正常的问题,因为我以前从未发现过这个命令 但是这里有一些关于可能导致它的场景的信息 本地绑定器是Android“绑定器”内核IPC驱动程序认为可以从另一个进程接收函数调用的任何对象 这些事情可以包括: 从IBinder派生的代码中声明的任何对象。当您声明

一个应用程序有大约100个本地绑定实例是正常的吗?这个数字上升到了那个高度,但从未下降到最初的水平。有这么多活页夹的情况可能是什么?

(作者在询问使用adb shell dumpsys meminfo列出的本地活页夹数量时重写)。我无法回答这是否正常的问题,因为我以前从未发现过这个命令

但是这里有一些关于可能导致它的场景的信息

本地绑定器是Android“绑定器”内核IPC驱动程序认为可以从另一个进程接收函数调用的任何对象

这些事情可以包括:

  • IBinder
    派生的代码中声明的任何对象。当您声明Android服务时,总会有这样的对象。在使用其他人的服务时,通常也会创建此类对象(如侦听器)
  • Android框架中的等效Java
    IBinder
    -派生对象。在某些情况下,这可能是显而易见的,例如当您向某些系统服务提供某种侦听器时。但其他Android框架类也经常涉及绑定。例如,我感觉Android位图中的某个地方包含一个
    IBinder
    ,以便安排不同的进程共享位图数据,而无需复制它。不过我不确定
  • C++中的Android框架的部分也是绑定器。例如,我认为每个Android应用程序进程都与名为
    ISurfaceComposer
    的图形合成引擎(surface flinger)相连
所以,要想知道为什么有这么多活页夹,请考虑以下几点:

  • 您是否希望从其他进程收到任何系统事件的通知?例如,广播接收器,或您传递给系统服务的任何类型的侦听器,等等
  • 您自己是否使用
    服务
    s和AIDL
  • 您是否将复杂的Android框架类传递到系统API中

我的直觉是100是不寻常的;实际上可能没什么好担心的,但我还是很想知道原因是什么。

活页夹线程数量的增加肯定是可疑的,但这不是我要问的。我对“adb shell dumpsys meminfo AppProcessName”观察到的绑定器实例的数量感兴趣