ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); int memoryClass = am.getMemoryClass(); Log.v("onCreate", "memoryClass:" + Integer.toString(memoryClass));
@Override public int calculateCacheSize(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); int targetMemoryCacheSize = (int) (activityManager.getMemoryClass() * MAX_SIZE_MULTIPLIER * 1024); if (targetMemoryCacheSize >= MAX_SIZE) { return MAX_SIZE; } return targetMemoryCacheSize; } };
@Override public int calculateCacheSize(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); int targetMemoryCacheSize = (int) (activityManager.getMemoryClass() * MAX_SIZE_MULTIPLIER * 1024); if (targetMemoryCacheSize >= MAX_SIZE) { return MAX_SIZE; } return targetMemoryCacheSize; } };
@Override public int calculateCacheSize(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); int targetMemoryCacheSize = (int) (activityManager.getMemoryClass() * MAX_SIZE_MULTIPLIER * 1024); if (targetMemoryCacheSize >= MAX_SIZE) { return MAX_SIZE; } return targetMemoryCacheSize; } };
@Override public int calculateCacheSize(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); int targetMemoryCacheSize = (int) (activityManager.getMemoryClass() * MAX_SIZE_MULTIPLIER * 1024); if (targetMemoryCacheSize >= MAX_SIZE) { return MAX_SIZE; } return targetMemoryCacheSize; } };
@Override public int calculateCacheSize(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); int targetMemoryCacheSize = (int) (activityManager.getMemoryClass() * MAX_SIZE_MULTIPLIER * 1024); if (targetMemoryCacheSize >= MAX_SIZE) { return MAX_SIZE; } return targetMemoryCacheSize; } };
private static int getMaxSize(ActivityManager activityManager, float maxSizeMultiplier, float lowMemoryMaxSizeMultiplier) { final int memoryClassBytes = activityManager.getMemoryClass() * 1024 * 1024; final boolean isLowMemoryDevice = isLowMemoryDevice(activityManager); return Math.round(memoryClassBytes * (isLowMemoryDevice ? lowMemoryMaxSizeMultiplier : maxSizeMultiplier)); }
public static long availableMemory() { final Runtime runtime = Runtime.getRuntime(); final long used = runtime.totalMemory() - runtime.freeMemory(); final ActivityManager activityManager = (ActivityManager) sContext. getSystemService(Context.ACTIVITY_SERVICE); final long total = activityManager.getMemoryClass() * 1024 * 1024; return total - used; }
static int calculateMemoryCacheSize(Context context) { ActivityManager am = ContextCompat.getSystemService(context, ActivityManager.class); boolean largeHeap = (context.getApplicationInfo().flags & FLAG_LARGE_HEAP) != 0; int memoryClass = largeHeap ? am.getLargeMemoryClass() : am.getMemoryClass(); // Target ~15% of the available heap. return (int) (1024L * 1024L * memoryClass / 7); }
public SamplePatchListener(Context context) { super(context); maxMemory = ((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass(); TinkerLog.i(TAG, "application maxMemory:" + maxMemory); }
/** * Creates default implementation of {@link MemoryCache} - {@link LruMemoryCache}<br /> * Default cache size = 1/8 of available app memory. */ public static MemoryCache createMemoryCache(Context context, int memoryCacheSize) { if (memoryCacheSize == 0) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); int memoryClass = am.getMemoryClass(); if (hasHoneycomb() && isLargeHeap(context)) { memoryClass = getLargeMemoryClass(am); } memoryCacheSize = 1024 * 1024 * memoryClass / 8; } return new LruMemoryCache(memoryCacheSize); }
/** * Outputs memory characteristics of the device. * Requires a reference to the current Activity. * Available for API 16+ * * @param context An activity {@link Context} reference. */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public static void getDeviceMemoryCharacteristics(Context context) { String memInfo; ActivityManager am; ActivityManager.MemoryInfo mi = new ActivityManager.MemoryInfo(); am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); memInfo = "-----------------------------------------\n"; memInfo += "Standard Heap per Application : " + am.getMemoryClass() + "mb \n"; memInfo += "Large Heap per Application : " + am.getLargeMemoryClass() + "mb \n"; am.getMemoryInfo(mi); memInfo += "Total Device Memory : " + Math.round(mi.totalMem / 1024 / 1024) + "mb \n"; memInfo += "Approximate Memory Available : " + Math.round(mi.availMem / 1024 / 1024) + "mb \n"; memInfo += "-----------------------------------------\n"; i(memInfo); } }
+ toMb(maxSize) + ", memoryClass: " + builder.activityManager.getMemoryClass() + ", isLowMemoryDevice: " + isLowMemoryDevice(builder.activityManager));
private void logActivityManagerStuff() { ActivityManager mgr=(ActivityManager)getSystemService(ACTIVITY_SERVICE); log("heap limit="+mgr.getMemoryClass()); log("large-heap limit="+mgr.getLargeMemoryClass()); }
ActivityManager am = (ActivityManager) context.getSystemService( Context.ACTIVITY_SERVICE); int maxKb = am.getMemoryClass() * 1024; int limitKb = maxKb / 8; // 1/8th of total ram cache = new TCLruCache(limitKb);
@Test public void getMemoryClass_shouldWork() { final ActivityManager activityManager = getActivityManager(); assertThat(activityManager.getMemoryClass()).isEqualTo(16); shadowOf(activityManager).setMemoryClass(42); assertThat(activityManager.getMemoryClass()).isEqualTo(42); }
private static int getMaxSize(ActivityManager activityManager) { final int memoryClassBytes = activityManager.getMemoryClass() * 1024 * 1024; final boolean isLowMemoryDevice = isLowMemoryDevice(activityManager); return Math.round(memoryClassBytes * (isLowMemoryDevice ? LOW_MEMORY_MAX_SIZE_MULTIPLIER : MAX_SIZE_MULTIPLIER)); }
MemorySizeCalculator(Context context, ActivityManager activityManager, ScreenDimensions screenDimensions) { this.context = context; final int maxSize = getMaxSize(activityManager); final int screenSize = screenDimensions.getWidthPixels() * screenDimensions.getHeightPixels() * BYTES_PER_ARGB_8888_PIXEL; int targetPoolSize = screenSize * BITMAP_POOL_TARGET_SCREENS; int targetMemoryCacheSize = screenSize * MEMORY_CACHE_TARGET_SCREENS; if (targetMemoryCacheSize + targetPoolSize <= maxSize) { memoryCacheSize = targetMemoryCacheSize; bitmapPoolSize = targetPoolSize; } else { int part = Math.round((float) maxSize / (BITMAP_POOL_TARGET_SCREENS + MEMORY_CACHE_TARGET_SCREENS)); memoryCacheSize = part * MEMORY_CACHE_TARGET_SCREENS; bitmapPoolSize = part * BITMAP_POOL_TARGET_SCREENS; } if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "Calculated memory cache size: " + toMb(memoryCacheSize) + " pool size: " + toMb(bitmapPoolSize) + " memory class limited? " + (targetMemoryCacheSize + targetPoolSize > maxSize) + " max size: " + toMb(maxSize) + " memoryClass: " + activityManager.getMemoryClass() + " isLowMemoryDevice: " + isLowMemoryDevice(activityManager)); } }
@Override public int calculateCacheSize(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); int targetMemoryCacheSize = (int) (activityManager.getMemoryClass() * MAX_SIZE_MULTIPLIER * 1024); if (targetMemoryCacheSize >= MAX_SIZE) { return MAX_SIZE; } return targetMemoryCacheSize; } };
@Override public int calculateCacheSize(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); int targetMemoryCacheSize = (int) (activityManager.getMemoryClass() * MAX_SIZE_MULTIPLIER * 1024); if (targetMemoryCacheSize >= MAX_SIZE) { return MAX_SIZE; } return targetMemoryCacheSize; } };