/// <summary>
        /// Returns the encoded <see cref="CountingMemoryCache{K, V}"/>.
        /// </summary>
        public static CountingMemoryCache <ICacheKey, IPooledByteBuffer> Get(
            ISupplier <MemoryCacheParams> encodedMemoryCacheParamsSupplier,
            IMemoryTrimmableRegistry memoryTrimmableRegistry,
            PlatformBitmapFactory platformBitmapFactory)
        {
            IValueDescriptor <IPooledByteBuffer> valueDescriptor =
                new ValueDescriptorImpl <IPooledByteBuffer>(
                    (value) =>
            {
                return(value.Size);
            });

            ICacheTrimStrategy trimStrategy = new NativeMemoryCacheTrimStrategy();

            CountingMemoryCache <ICacheKey, IPooledByteBuffer> countingCache =
                new CountingMemoryCache <ICacheKey, IPooledByteBuffer>(
                    valueDescriptor,
                    trimStrategy,
                    encodedMemoryCacheParamsSupplier,
                    platformBitmapFactory,
                    false);

            memoryTrimmableRegistry.RegisterMemoryTrimmable(countingCache);

            return(countingCache);
        }
Example #2
0
        /// <summary>
        /// Instantiates the bitmap counting memory cache.
        /// </summary>
        public static CountingMemoryCache <ICacheKey, CloseableImage> Get(
            ISupplier <MemoryCacheParams> bitmapMemoryCacheParamsSupplier,
            IMemoryTrimmableRegistry memoryTrimmableRegistry,
            PlatformBitmapFactory platformBitmapFactory,
            bool isExternalCreatedBitmapLogEnabled)
        {
            IValueDescriptor <CloseableImage> valueDescriptor =
                new ValueDescriptorImpl <CloseableImage>(
                    (value) =>
            {
                return(value.SizeInBytes);
            });

            ICacheTrimStrategy trimStrategy = new BitmapMemoryCacheTrimStrategy();

            CountingMemoryCache <ICacheKey, CloseableImage> countingCache =
                new CountingMemoryCache <ICacheKey, CloseableImage>(
                    valueDescriptor,
                    trimStrategy,
                    bitmapMemoryCacheParamsSupplier,
                    platformBitmapFactory,
                    isExternalCreatedBitmapLogEnabled);

            memoryTrimmableRegistry.RegisterMemoryTrimmable(countingCache);

            return(countingCache);
        }
        /// <summary>
        /// Instantiates the <see cref="SharedByteArray"/>.
        /// </summary>
        /// <param name="memoryTrimmableRegistry">
        /// A class to be notifiedof system memory events.
        /// </param>
        /// <param name="args">The pool params.</param>
        public SharedByteArray(
            IMemoryTrimmableRegistry memoryTrimmableRegistry,
            PoolParams args)
        {
            Preconditions.CheckNotNull(memoryTrimmableRegistry);
            Preconditions.CheckArgument(args.MinBucketSize > 0);
            Preconditions.CheckArgument(args.MaxBucketSize >= args.MinBucketSize);

            _maxByteArraySize = args.MaxBucketSize;
            _minByteArraySize = args.MinBucketSize;
            _byteArraySoftRef = new OOMSoftReference <byte[]>();
            _resourceReleaser = new ResourceReleaserImpl <byte[]>(value =>
            {
                _semaphore.Release();
            });

            memoryTrimmableRegistry.RegisterMemoryTrimmable(this);
        }
Example #4
0
 /// <summary>
 /// Finish pool initialization.
 /// </summary>
 protected void Initialize()
 {
     _memoryTrimmableRegistry.RegisterMemoryTrimmable(this);
     _poolStatsTracker.SetBasePool(this);
 }