Fix ContextImpl leak in ActivityThread.
ActivityThread caches system ui contexts per display, but never removes them when the corresponding displays are removed. This is especially problematic with VirtualDisplay-s and ActivityThread instance used in system server. This cl modifies the cache to use WeakRef and allow instances to be garbage collected. Also, since the context can be moved between the displays, it's possible that the cached instance doesn't correspond to the display in the SparseArray key at the moment it's fetched. This cl stores the instances in the simple array list (The number of instances at the same time should be low, and we would anyway need to traverse the whole SparseArray to check for moved instances). Bug: 330472805 Test: verifying heapdump after atest CtsVirtualDevicesAppLaunchTestCases --iterations 10 Change-Id: I8811945560381653cac8363d4086f87d253e22db
Loading
Please register or sign in to comment