                 } else if (bitmap != null) {
                     removeChild(bitmap);
                     _bitmaps[idx] = null;
+                    bitmap.bitmapData = null;
+                    _bitmapPool.push(bitmap);
                 }
             }
         }

                var bitmap :Bitmap = _bitmaps[idx];
                if (nvalue != 0x20) {
                    if (bitmap == null) {
                        _bitmaps[idx] = bitmap = new Bitmap();
                        bitmap.x = _x + xx*_charWidth;
                        bitmap.y = _y + yy*_charHeight;
                        addChildAt(bitmap, 1);

    /** The character bitmaps for each location. */
    protected var _bitmaps :Array;

    /** A pool of bitmaps to reuse. */
    protected var _bitmapPool :Array = new Array();

    /** The cached bitmap data for each character. */
    protected var _bitmapData :Object;

