com.facebook.imagepipeline.memory.PoolStats.java Source code

Java tutorial

Introduction

Here is the source code for com.facebook.imagepipeline.memory.PoolStats.java

Source

/*
 * Copyright (c) 2015-present, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */

package com.facebook.imagepipeline.memory;

import java.util.Map;

import com.google.common.collect.Maps;

/**
 * Helper class to get pool stats
*/
public class PoolStats<V> {
    public BasePool<V> mPool;

    public int mUsedBytes;
    public int mUsedCount;
    public int mFreeBytes;
    public int mFreeCount;

    Map<Integer, IntPair> mBucketStats;

    public PoolStats(BasePool<V> pool) {
        mPool = pool;
        mBucketStats = Maps.newHashMap();
    }

    public void setPool(BasePool<V> pool) {
        mPool = pool;
    }

    /**
     * Refresh all pool stats
     */
    public void refresh() {
        refreshBasic();
        refreshBucketStats();
    }

    public void refreshBasic() {
        mUsedBytes = mPool.mUsed.mNumBytes;
        mUsedCount = mPool.mUsed.mCount;
        mFreeBytes = mPool.mFree.mNumBytes;
        mFreeCount = mPool.mFree.mCount;
    }

    public void refreshBucketStats() {
        mBucketStats.clear();
        for (int i = 0; i < mPool.mBuckets.size(); ++i) {
            final int bucketedSize = mPool.mBuckets.keyAt(i);
            final Bucket<V> bucket = mPool.mBuckets.valueAt(i);
            mBucketStats.put(bucketedSize, new IntPair(bucket.getInUseCount(), bucket.getFreeListSize()));
        }
    }
}