안녕하세요.
주소록을 가져와서 출력하는 소스를 작성중인데
가져온 리스트를 스크롤하다보면 오류가 발생합니다.


11-09 18:07:43.638: ERROR/IMemory(1525): cannot dup fd=1023, size=1048576, err=0 (Too many open files)
11-09 18:07:43.638: ERROR/IMemory(1525): cannot map BpMemoryHeap (binder=0x6e5300), size=1048576, fd=-1 (Bad file number)
11-09 18:07:43.638: ERROR/JavaBinder(1525): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
11-09 18:07:43.638: ERROR/JavaBinder(1525): java.lang.RuntimeException: No memory in memObj
11-09 18:07:43.638: ERROR/JavaBinder(1525):     at android.database.CursorWindow.native_init(Native Method)
11-09 18:07:43.638: ERROR/JavaBinder(1525):     at android.database.CursorWindow.<init>(CursorWindow.java:518)
11-09 18:07:43.638: ERROR/JavaBinder(1525):     at android.database.CursorWindow.<init>(CursorWindow.java:27)
11-09 18:07:43.638: ERROR/JavaBinder(1525):     at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:493)
11-09 18:07:43.638: ERROR/JavaBinder(1525):     at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:496)
11-09 18:07:43.638: ERROR/JavaBinder(1525):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:96)
11-09 18:07:43.638: ERROR/JavaBinder(1525):     at android.os.Binder.execTransact(Binder.java:287)
11-09 18:07:43.638: ERROR/JavaBinder(1525):     at dalvik.system.NativeStart.run(Native Method)
11-09 18:07:43.669: ERROR/IMemory(1525): cannot dup fd=1023, size=1048576, err=0 (Too many open files)
11-09 18:07:43.669: ERROR/IMemory(1525): cannot map BpMemoryHeap (binder=0x433400), size=1048576, fd=-1 (Bad file number)
11-09 18:07:43.677: ERROR/JavaBinder(1525): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
11-09 18:07:43.677: ERROR/JavaBinder(1525): java.lang.RuntimeException: No memory in memObj
11-09 18:07:43.677: ERROR/JavaBinder(1525):     at android.database.CursorWindow.native_init(Native Method)
11-09 18:07:43.677: ERROR/JavaBinder(1525):     at android.database.CursorWindow.<init>(CursorWindow.java:518)
11-09 18:07:43.677: ERROR/JavaBinder(1525):     at android.database.CursorWindow.<init>(CursorWindow.java:27)
11-09 18:07:43.677: ERROR/JavaBinder(1525):     at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:493)
11-09 18:07:43.677: ERROR/JavaBinder(1525):     at android.database.CursorWindow$1.createFromParcel(CursorWindow.java:496)
11-09 18:07:43.677: ERROR/JavaBinder(1525):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:96)
11-09 18:07:43.677: ERROR/JavaBinder(1525):     at android.os.Binder.execTransact(Binder.java:287)
11-09 18:07:43.677: ERROR/JavaBinder(1525):     at dalvik.system.NativeStart.run(Native Method)
11-09 18:07:43.677: DEBUG/AndroidRuntime(4096): Shutting down VM
11-09 18:07:43.685: WARN/dalvikvm(4096): threadid=3: thread exiting with uncaught exception (group=0x4001d1c8)
11-09 18:07:43.685: ERROR/AndroidRuntime(4096): Uncaught handler: thread main exiting due to uncaught exception
11-09 18:07:43.763: ERROR/AndroidRuntime(4096): java.lang.NullPointerException
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at kr.pe.johnkim.contactmanager.adapter.ContactManagerAdapter.getView(ContactManagerAdapter.java:85)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at android.widget.AbsListView.obtainView(AbsListView.java:1266)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at android.widget.ListView.makeAndAddView(ListView.java:1668)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at android.widget.ListView.fillUp(ListView.java:667)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at android.widget.ListView.fillGap(ListView.java:613)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at android.widget.AbsListView.trackMotionScroll(AbsListView.java:2566)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:2368)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at android.os.Handler.handleCallback(Handler.java:587)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at android.os.Looper.loop(Looper.java:123)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at android.app.ActivityThread.main(ActivityThread.java:4364)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at java.lang.reflect.Method.invokeNative(Native Method)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at java.lang.reflect.Method.invoke(Method.java:521)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-09 18:07:43.763: ERROR/AndroidRuntime(4096):     at dalvik.system.NativeStart.main(Native Method)



이런식으로 나오는데 메모리쪽이 어쩌고 저쩌고 나오고 cursor 에서 null 오류가 발생하네요.
처음엔 출력 잘되는데 스크롤을 한참 하다보면 발생합니다.

소스는 아래와 같습니다.
(위에서 nullpoint exception 이 발생한 85 라인이 아래소스의 33 라인입니다.)

     @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        pp = position;

        convertView = View.inflate(context, R.layout.contact_entry, null);
        TextView name = (TextView)convertView.findViewById(R.id.contactEntryText);
        TextView phonenumber = (TextView)convertView.findViewById(R.id.txtViewContactPhoneNumber);
        ImageView profileimage = (ImageView)convertView.findViewById(R.id.profileimage);
        CheckBox chk = (CheckBox)convertView.findViewById(R.id.CheckBox01);

        cursor.moveToPosition(position);
        Long id = cursor.getLong(0);
        name.setText(cursor.getString(1));
        Bitmap bm  = BitmapFactory.decodeStream(openPhoto(id));
        profileimage.setImageBitmap(bm);

        chk.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(context, "position : " + pp, Toast.LENGTH_SHORT).show();
                //                Log.e("count : ", position+"");
            }
        });

        ContentResolver contentResolver = context.getContentResolver();    
        phoneCursor = contentResolver.query(Phone.CONTENT_URI,
                new String[]{Phone.NUMBER},
                Phone.CONTACT_ID + "=" + id, null, Phone.IS_SUPER_PRIMARY + " DESC");

        if(phoneCursor.getCount() > 0){
            //            Log.e("count : ", phonecursor.getCount()+"");


            phoneCursor.moveToFirst();
            Log.e("phone : ", phoneCursor.getString(0));
            phonenumber.setText(phoneCursor.getString(0));
        }else{

        }

        return super.getView(position, convertView, parent);

    }


별다른건 없습니다.
getView 에서 출력하고 있는데요, 왜 저런 오류가 발생하는지 모르겠네요.
메모리쪽 문제인지도.. 현재 모토로이, 갤럭시S 두대로 테스트 중인데 같은 현상이 발생하고 있습니다.
혹시나 해서 view wrapper 로 구현해봤는데도 마찬가지입니다. 성능 향상 효과도 거의 없는것 같고..
지금도 속도가 너무 느립니다. 로직이 잘못됐는지..

아시는분의 조언을 부탁드립니다.