camera.previewcallback() 에서 작업을 하고있는데 이미지를 계속 불러오는 작업이에요..

근데 몇초동안은 실행되다가 아래와 같은 에러가 로그켓에 뜨는데 아무래도 메모리 문제인거 같아요..

Logcat..
D/dalvikvm(815):GC freed 132 object / 57608 bytes in 121ms
D/dalvikvm(815):GC freed 176 object / 76704 bytes in 118ms
D/dalvikvm(815):GC freed 184 object / 94272 bytes in 152ms
.
.
.

I/dalvikvm-heap(  815): Clamp target GC heap from 18.000MB to 16.000MB
D/dalvikvm(  815): GC freed 171 objects / 29408 bytes in 180ms
I/dalvikvm-heap(  815): Clamp target GC heap from 16.017MB to 16.000MB
I/dalvikvm-heap(  815): Grow heap (frag case) to 16.000MB for 17136-byte allocat
ion

.
.
.
이런 문제가 발생합니다. 콜백함수에서는

mCamera.setPreviewCallback(new PreviewCallback(){
         
         public void onPreviewFrame(byte[] data,Camera camera){
         
         Canvas canvas = null;
         try{
           canvas = mHolder.lockCanvas(null);
           synchronized(mHolder){
          try{
           try {
           
                  decodeYUV420SP(rgb,data,wid,hei); // yuv영상을 rgb로 바꿔주는 함수
                  bitmap = Bitmap.createBitmap(wid, hei, Bitmap.Config.RGB_565);
                  bitmap.setPixels(rgb, 0, wid, 0,0,wid,hei);
       
           } catch (Exception e) {
                  e.printStackTrace();
           }
                
            
          }catch(Exception e){
           e.printStackTrace();
          }
            draw(canvas);
            mThread.sleep(2000);
           }
           
          }catch(Exception e){
           e.printStackTrace();
          }finally{
           if(canvas != null){
            mHolder.unlockCanvasAndPost(canvas);
           }
          }
         }
         
        });

이 몇줄 밖에 사용하지 않았습니다.
비트맵이 메모리에 누적이 되서 그런건가요?
어떻게 해결하면 되죠?
당체 문제를 모르겠습니다.....

고수님들의 훌륭한 답변 기다리겠습니다...

긴글 읽어주셔서 감사합니다....(__)