【发布时间】:2013-01-08 04:08:09
【问题描述】:
应用程序有大约 100 个本地绑定器实例是否正常?这个数字攀升到那个高位,并且永远不会下降到最初的水平。拥有这么多活页夹的场景是什么?
【问题讨论】:
标签: android performance android-binder
应用程序有大约 100 个本地绑定器实例是否正常?这个数字攀升到那个高位,并且永远不会下降到最初的水平。拥有这么多活页夹的场景是什么?
【问题讨论】:
标签: android performance android-binder
(重写为作者询问使用adb shell dumpsys meminfo 列出的本地活页夹的数量)。我无法回答这是否正常的问题,因为我以前从未发现过该命令!
但这里有一些关于可能导致它的场景的信息。
本地绑定器是 Android 'Binder' 内核 IPC 驱动程序认为可以接收来自另一个进程的函数调用的任何对象。
这些事情可能包括:
IBinder 派生的对象。当你声明一个 Android 服务时,总会有这样的对象。当您使用其他人的服务时,您通常还会创建此类对象(作为侦听器)。IBinder 派生对象。在某些情况下,这可能很明显,例如当您为某些系统服务提供某种侦听器时。但其他 Android 框架类也经常涉及到 Binder。例如,我有一种感觉,Android Bitmap 在它的某处包含一个IBinder,以便安排不同的进程共享位图数据而不需要复制它。不过,我不确定。ISurfaceComposer 的图形合成引擎(surface flinger)。所以,要弄清楚为什么会有这么多 Binder,请考虑以下几点:
Services 和AIDL 吗?我的直觉是 100 是不寻常的;实际上可能没什么担心,但我仍然很想知道你是否找出原因。
【讨论】: