Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2aa911c0 authored by Hans Boehm's avatar Hans Boehm
Browse files

Remove NotificationVisibility storage pool

Based on recent measurements, storage pools of small objects are
generally not useful.

We ran into this because growing ArrayDeques are potentially very
unfriendly towards a generational GC, and racing recycle calls
can cause it it grow beyond MAX_POOL_SIZE. This isn't a big deal,
but there's no reason we should even be thinking about it.

Test: Build and boot AOSP

Change-Id: Icbda95e472e206c54f141129cc36ddc6d163b095
parent 6622d095
Loading
Loading
Loading
Loading
+1 −16
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import java.util.Collection;
public class NotificationVisibility implements Parcelable {
    private static final String TAG = "NoViz";
    private static final int MAX_POOL_SIZE = 25;
    private static ArrayDeque<NotificationVisibility> sPool = new ArrayDeque<>(MAX_POOL_SIZE);
    private static int sNexrId = 0;

    public String key;
@@ -119,11 +118,6 @@ public class NotificationVisibility implements Parcelable {
    }

    private static NotificationVisibility obtain() {
        synchronized (sPool) {
            if (!sPool.isEmpty()) {
                return sPool.poll();
            }
        }
        return new NotificationVisibility();
    }

@@ -135,16 +129,7 @@ public class NotificationVisibility implements Parcelable {
     * </p>
     */
    public void recycle() {
        if (key == null) {
            // do nothing on multiple recycles
            return;
        }
        key = null;
        if (sPool.size() < MAX_POOL_SIZE) {
            synchronized (sPool) {
                sPool.offer(this);
            }
        }
        // With a modern GC, this is no longer useful for objects this small.
    }

    /**