All Projects → amitshekhariitbhu → Glidebitmappool

amitshekhariitbhu / Glidebitmappool

Licence: apache-2.0
Glide Bitmap Pool is a memory management library for reusing the bitmap memory

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Glidebitmappool

AvatarImageGenerator
Android library to generate image avatar from the first letter of a username. Letter avatar like Gmail Android best practice
Stars: ✭ 61 (-88.79%)
Mutual labels:  bitmap, glide
Cpp optimizations diary
Tips and tricks to optimize your C++ code
Stars: ✭ 517 (-4.96%)
Mutual labels:  optimization
Webpack Closure Compiler
[DEPRECATED] Google Closure Compiler plugin for Webpack
Stars: ✭ 467 (-14.15%)
Mutual labels:  optimization
Lepto
Automated image Editing, Optimization and Analysis via CLI and a web interface. You give to lepto your input and output directories, the plugins you want to use and their options. Then lepto does his job, you keep your original files and the structure of the input directory. Some plugins can even collect data (like primary colors) from your images and save them in a JSON file.
Stars: ✭ 490 (-9.93%)
Mutual labels:  optimization
Gaussianblur
An easy and fast library to apply gaussian blur filter on any images. 🎩
Stars: ✭ 473 (-13.05%)
Mutual labels:  bitmap
Ployfun
LowPoly image processing./导入图片生成Low Poly风格图片的app
Stars: ✭ 507 (-6.8%)
Mutual labels:  bitmap
Qpth
A fast and differentiable QP solver for PyTorch.
Stars: ✭ 461 (-15.26%)
Mutual labels:  optimization
Pagmo2
A C++ platform to perform parallel computations of optimisation tasks (global and local) via the asynchronous generalized island model.
Stars: ✭ 540 (-0.74%)
Mutual labels:  optimization
Hyperparameter Optimization Of Machine Learning Algorithms
Implementation of hyperparameter optimization/tuning methods for machine learning & deep learning models (easy&clear)
Stars: ✭ 516 (-5.15%)
Mutual labels:  optimization
Autokernel
AutoKernel 是一个简单易用,低门槛的自动算子优化工具,提高深度学习算法部署效率。
Stars: ✭ 485 (-10.85%)
Mutual labels:  optimization
Glidewebpdecoder
A Glide WebpDecoder Intergration Library for decoding and displaying webp images
Stars: ✭ 484 (-11.03%)
Mutual labels:  glide
Llvm
Project moved to: https://github.com/llvm/llvm-project
Stars: ✭ 4,461 (+720.04%)
Mutual labels:  optimization
Faceswap
3D face swapping implemented in Python
Stars: ✭ 508 (-6.62%)
Mutual labels:  optimization
Hashids.net
A small .NET package to generate YouTube-like hashes from one or many numbers. Use hashids when you do not want to expose your database ids to the user.
Stars: ✭ 470 (-13.6%)
Mutual labels:  decoding
Apkgolf
The smallest Android APK in the world
Stars: ✭ 528 (-2.94%)
Mutual labels:  optimization
Winapp2
A database of extended cleaning routines for popular Windows PC based maintenance software.
Stars: ✭ 463 (-14.89%)
Mutual labels:  optimization
Scrollgalleryview
🌉 Android image gallery with bottom scroll view
Stars: ✭ 481 (-11.58%)
Mutual labels:  glide
Imagemin
[Unmaintained] Minify images seamlessly
Stars: ✭ 4,948 (+809.56%)
Mutual labels:  optimization
Bailan
基于retorfit2,Rxjva2,Okhttp3,Glide,Dagger2,GreenDAO等框架采用MVP架构的仿应用商店App
Stars: ✭ 542 (-0.37%)
Mutual labels:  glide
Vroom
Vehicle Routing Open-source Optimization Machine
Stars: ✭ 533 (-2.02%)
Mutual labels:  optimization

Glide Bitmap Pool

Mindorks Mindorks Community Mindorks Android Store Open Source Love License

About Glide Bitmap Pool

Glide Bitmap Pool is a memory management library for reusing the bitmap memory. As it reuses bitmap memory , so no more GC calling again and again , hence smooth running application. It uses inBitmap while decoding the bitmap on the supported android versions. All the version use-cases has been handled to optimize it better.

Why use this library ?

An Image heavy Application decodes many images , so there will be continuous allocation and deallocation of memory in application , and that results in very frequent calling of GC(Garbage Collector). And finally because of very frequent calling of GC , the application UI freezes. Use Bitmap pool to avoid continuous allocation and deallocation of memory in application and reduce GC overhead that will result in smooth running application. Suppose we have to load few bitmap in Android Application. When we load bitmapOne , it will allocate the memory for bitmapOne. Then if we don’t need bitmapOne , do not recycle bitmap (as if you recycle, it will make GC to be called) , so use this bitmapOne as an inBitmap for bitmapTwo so that , the same memory can be reused for bitmapTwo. In this way , we can avoid continuous allocation and deallocation of memory in application and reduce GC overhead. But the problem is that there are few restrictions as android version less than Honeycomb does not supports it , few android version less than Kitkat only when we use inSampleSize = 1 , above that it supports completely and few other issues. So , all these types of cases are handled in this library

GET RID OF : GC_FOR_ALLOC freed 1568K, 23% free 37664K/48844K, paused 141ms, total 143ms - (whenever you see this log , your application is lagging)

Requirements

Glide Bitmap Pool can be included in any Android or Java application.

Glide Bitmap Pool supports Android 2.3 (Gingerbread) and later.

Using Glide Bitmap Pool in your application

Add this in your build.gradle

compile 'com.amitshekhar.android:glide-bitmap-pool:0.0.1'

Then initialize it in onCreate() Method of application class, :

GlideBitmapPool.initialize(10 * 1024 * 1024); // 10mb max memory size

Decoding the bitmap from file path

Bitmap bitmap = GlideBitmapFactory.decodeFile(filePath);

Decoding the bitmap from resources

Bitmap bitmap = GlideBitmapFactory.decodeResource(getResources(), R.drawable.testImage);

Decoding the down sample bitmap

Bitmap bitmap = GlideBitmapFactory.decodeFile(filePath,100,100);

Making the bitmap available for recycle or reuse

GlideBitmapPool.putBitmap(bitmap);

Getting the empty bitmap from the pool

Bitmap bitmap = GlideBitmapPool.getBitmap(width, height, config);

Clearing or Trimming Memory

GlideBitmapPool.clearMemory();
GlideBitmapPool.trimMemory(level);

Migrating to Glide Bitmap Pool

// ------   decoding -------

// old code 
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test1);

// new code 
Bitmap bitmap = GlideBitmapFactory.decodeResource(getResources(), R.drawable.test1);

// ------   recycling ------- 

// old code
bitmap.recycle();

// new code
GlideBitmapPool.putBitmap(bitmap);

//  ------   creating a bitmap -------

// old code 
Bitmap bitmap = Bitmap.create(width, height, config);

// new code
Bitmap bitmap = GlideBitmapPool.getBitmap(width, height, config);

Important

// Do not use bitmap.recycle();
// use GlideBitmapPool.putBitmap(bitmap); as it will put bitmap in the pool for further reuse.

// Do not use Bitmap.create(width, height, config);
// use GlideBitmapPool.getBitmap(width, height, config); as it returns bitmap from the pool that can be reused.

Find this project useful ? ❤️

  • Support it by clicking the ⭐️ button on the upper right of this page. ✌️

Credits and references

TODO

  • More Optimization with further updates.

Check out another awesome library for fast and simple networking in Android.

Another awesome library for debugging databases and shared preferences.

Check out Mindorks awesome open source projects here

Contact - Let's become friend

License

   Copyright (C) 2016 Amit Shekhar
   Copyright (C) 2011 Android Open Source Project

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

Contributing to Glide Bitmap Pool

All pull requests are welcome, make sure to follow the contribution guidelines when you submit pull request.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].