/*
* 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 android.util.SparseIntArray;
import com.facebook.common.util.ByteConstants;
/**
* Provides pool parameters ({@link PoolParams}) for {@link SharedByteArray}
*/
public class DefaultFlexByteArrayPoolParams {
// the default max buffer size we'll use
public static final int DEFAULT_MAX_BYTE_ARRAY_SIZE = 4 * ByteConstants.MB;
// the min buffer size we'll use
private static final int DEFAULT_MIN_BYTE_ARRAY_SIZE = 128 * ByteConstants.KB;
// the maximum number of threads permitted to touch this pool
public static final int DEFAULT_MAX_NUM_THREADS = Runtime.getRuntime().availableProcessors();
private DefaultFlexByteArrayPoolParams() {
}
public static SparseIntArray generateBuckets(int min, int max, int numThreads) {
SparseIntArray buckets = new SparseIntArray();
for (int i = min; i <= max; i*=2) {
buckets.put(i, numThreads);
}
return buckets;
}
public static PoolParams get() {
return new PoolParams(
/* maxSizeSoftCap */ DEFAULT_MAX_BYTE_ARRAY_SIZE,
/* maxSizeHardCap */ DEFAULT_MAX_NUM_THREADS * DEFAULT_MAX_BYTE_ARRAY_SIZE,
/* bucketSizes */ generateBuckets(
DEFAULT_MIN_BYTE_ARRAY_SIZE,
DEFAULT_MAX_BYTE_ARRAY_SIZE,
DEFAULT_MAX_NUM_THREADS),
/* minBucketSize */ DEFAULT_MIN_BYTE_ARRAY_SIZE,
/* maxBucketSize */ DEFAULT_MAX_BYTE_ARRAY_SIZE,
/* maxNumThreads */ DEFAULT_MAX_NUM_THREADS);
}
}