15d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/* 25d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Copyright (C) 2009 The Android Open Source Project 35d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 45d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Licensed under the Apache License, Version 2.0 (the "License"); 55d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * you may not use this file except in compliance with the License. 65d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * You may obtain a copy of the License at 75d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 85d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * http://www.apache.org/licenses/LICENSE-2.0 95d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Unless required by applicable law or agreed to in writing, software 115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * distributed under the License is distributed on an "AS IS" BASIS, 125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * See the License for the specific language governing permissions and 145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * limitations under the License. 155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class Main { 185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Bitmap mBitmap1, mBitmap2, mBitmap3, mBitmap4; 195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public static void sleep(int ms) { 215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao try { 225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Thread.sleep(ms); 235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } catch (InterruptedException ie) { 245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.err.println("sleep interrupted"); 255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public static void main(String args[]) { 295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("start"); 305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Main main = new Main(); 325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao main.run(); 335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao sleep(1000); 355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("done"); 365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public void run() { 395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao createBitmaps(); 405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 417befd0e35bbed32b90bc0c8b6d3fa8bd612f5506Mathieu Chartier Runtime.getRuntime().gc(); 425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao sleep(250); 435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao mBitmap2.drawAt(0, 0); 455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("nulling 1"); 475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao mBitmap1 = null; 487befd0e35bbed32b90bc0c8b6d3fa8bd612f5506Mathieu Chartier Runtime.getRuntime().gc(); 495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao sleep(500); 505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("nulling 2"); 525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao mBitmap2 = null; 537befd0e35bbed32b90bc0c8b6d3fa8bd612f5506Mathieu Chartier Runtime.getRuntime().gc(); 545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao sleep(500); 555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("nulling 3"); 575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao mBitmap3 = null; 587befd0e35bbed32b90bc0c8b6d3fa8bd612f5506Mathieu Chartier Runtime.getRuntime().gc(); 595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao sleep(500); 605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println("nulling 4"); 625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao mBitmap4 = null; 637befd0e35bbed32b90bc0c8b6d3fa8bd612f5506Mathieu Chartier Runtime.getRuntime().gc(); 645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao sleep(500); 655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Bitmap.shutDown(); 675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /* 705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Create bitmaps. 715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * bitmap1 is 10x10 and unique 735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * bitmap2 and bitmap3 are 20x20 and share the same storage. 745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * bitmap4 is just another reference to bitmap3 755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * When we return there should be no local refs lurking on the stack. 775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public void createBitmaps() { 795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Bitmap.NativeWrapper dataA = Bitmap.allocNativeStorage(10, 10); 805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Bitmap.NativeWrapper dataB = Bitmap.allocNativeStorage(20, 20); 815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao mBitmap1 = new Bitmap("one", 10, 10, dataA); 825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao mBitmap2 = new Bitmap("two", 20, 20, dataB); 835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao mBitmap3 = mBitmap4 = new Bitmap("three/four", 20, 20, dataB); 845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao} 86