1a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden/* 2a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * Copyright (C) 2009 The Android Open Source Project 3a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * 4a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * Licensed under the Apache License, Version 2.0 (the "License"); 5a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * you may not use this file except in compliance with the License. 6a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * You may obtain a copy of the License at 7a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * 8a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * http://www.apache.org/licenses/LICENSE-2.0 9a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * 10a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * Unless required by applicable law or agreed to in writing, software 11a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * distributed under the License is distributed on an "AS IS" BASIS, 12a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * See the License for the specific language governing permissions and 14a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * limitations under the License. 15a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden */ 16a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 17a297c650185818b136099b5a3cc9689671e64cf5Andy McFaddenpublic class Main { 18a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden Bitmap mBitmap1, mBitmap2, mBitmap3, mBitmap4; 19a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 20a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden public static void sleep(int ms) { 21a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden try { 22a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden Thread.sleep(ms); 23a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden } catch (InterruptedException ie) { 24a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.err.println("sleep interrupted"); 25a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden } 26a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden } 27a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 28a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden public static void main(String args[]) { 29a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.out.println("start"); 30a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 31a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden Main main = new Main(); 32a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden main.run(); 33a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 34a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden sleep(1000); 35a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.out.println("done"); 36a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden } 37a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 38a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden public void run() { 39a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden createBitmaps(); 40a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 41a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.gc(); 42a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden sleep(250); 43a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 44a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden mBitmap2.drawAt(0, 0); 45a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 46a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.out.println("nulling 1"); 47a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden mBitmap1 = null; 48a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.gc(); 49a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden sleep(500); 50a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 51a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.out.println("nulling 2"); 52a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden mBitmap2 = null; 53a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.gc(); 54a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden sleep(500); 55a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 56a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.out.println("nulling 3"); 57a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden mBitmap3 = null; 58a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.gc(); 59a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden sleep(500); 60a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 61a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.out.println("nulling 4"); 62a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden mBitmap4 = null; 63a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden System.gc(); 64a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden sleep(500); 65a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 66a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden Bitmap.shutDown(); 67a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden } 68a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden 69a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden /* 70a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * Create bitmaps. 71a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * 72a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * bitmap1 is 10x10 and unique 73a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * bitmap2 and bitmap3 are 20x20 and share the same storage. 74a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * bitmap4 is just another reference to bitmap3 75a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * 76a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden * When we return there should be no local refs lurking on the stack. 77a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden */ 78a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden public void createBitmaps() { 79a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden Bitmap.NativeWrapper dataA = Bitmap.allocNativeStorage(10, 10); 80a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden Bitmap.NativeWrapper dataB = Bitmap.allocNativeStorage(20, 20); 81a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden mBitmap1 = new Bitmap("one", 10, 10, dataA); 82a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden mBitmap2 = new Bitmap("two", 20, 20, dataB); 83a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden mBitmap3 = mBitmap4 = new Bitmap("three/four", 20, 20, dataB); 84a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden } 85a297c650185818b136099b5a3cc9689671e64cf5Andy McFadden} 86