2016-07-27 4 views
-4

시나리오은 데이터베이스에 데이터가 있습니다 SQLite입니다. 내가 얻을 수있는 데이터의 올바르게, 나는 가지고 여기OutOfMemoryError OutOfMemoryError 인출

Cursor c0 = OCTDBHelper.myDataBase.rawQuery("SELECT DISTINCT ALIAS FROM ICT32 where ALIAS NOT NULL", null); 
Log.i("IC-Count", "IC-Count : " + c0.getCount()); 
String arr[] =new String[c0.getCount()]; 

    c0.moveToFirst(); 
     for(int i = 0; i < c0.getCount(); i++) 
     { 
      arr[i] = c0.getString(0); 
      c0.moveToNext(); 

     } 

모든 데이터의 정확히 같은 arr에서,

편곡 [0] : ABCB, hjhj, jkshdf, hdjf, ghsg, aghgh,

arr [1] : klkl, sdjk, jkji, iui, jiji, jij,

. . .

도착 [N] : QW, RWER 재, TR, yty, UYU, RTR, TER, ETR, YRT는 YTR

ie, 각 위치와 comma(,) 10-30 데이터를 갖는다. 배열 n'th 위치에 도달 할 때까지 내가 comma(,)에 따라 split(",") 필요하고 단일 List에 추가

  • 로 다음과 같은 total arr.length is 1322

    해당 데이터를 얻기 후에 나는 그 데이터로 어떤 작업을 할 필요가있다.

  • 결국 내 출력

    목록되어야 [0] hjhj

    리스트 [2] [1]

    리스트 ABCB jkshdf

    ...

    목록 [n-1] : yrt

    목록 [N] : YTR

는 이미 제대로했다고 생각. 하지만

Cursor c0 = OCTDBHelper.myDataBase.rawQuery("SELECT DISTINCT ALIAS FROM ICT32 where ALIAS NOT NULL", null); 

Log.i("IC-Count", "IC-Count : " + c0.getCount()); 
ArrayList<String> tmp = new ArrayList<>(); 
c0.moveToFirst(); 
     for(int i = 0; i < c0.getCount(); i++) 
      { 
       String arr[] = c0.getString(0).split(","); 
        for(int j= 0; j< arr.length;i++) 
          { 
           if(!arr[j].equals(",")) 
            { 
             tmp.add(arr[j]); 
            } 
          } 
        c0.moveToNext(); 

      } 

Log.i("Alias" , "count : " +tmp.size()); 

이 코드를 제공, Throwing OutOfMemoryError

내 코드는 같은 오류를 제공 Throwing OutOfMemoryError

로그 캣 ??이 문제를 해결하는 방법

FATAL EXCEPTION: main 
Process: estec.android.mvi32, PID: 11005 
java.lang.OutOfMemoryError: Failed to allocate a 103059952 byte allocation with 16777120 free bytes and 58MB until OOM 
at java.util.ArrayList.add(ArrayList.java:118) 
at estec.android.mvi32.OCTActivity.onOptionsItemSelected(OCTActivity.java:294) 
at android.app.Activity.onMenuItemSelected(Activity.java:2882) 
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:353) 
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:144) 
at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:99) 
at android.support.v7.app.AppCompatDelegateImplV7.onMenuItemSelected(AppCompatDelegateImplV7.java:541) 
at android.support.v7.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:811) 
at android.support.v7.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:153) 
at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:958) 
at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:948) 
at android.support.v7.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:187) 
at android.widget.AdapterView.performItemClick(AdapterView.java:300) 
at android.widget.AbsListView.performItemClick(AbsListView.java:1143) 
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3044) 
at android.widget.AbsListView.onTouchUp(AbsListView.java:3872) 
at android.widget.AbsListView.onTouchEvent(AbsListView.java:3627) 
at android.view.View.dispatchTouchEvent(View.java:8388) 
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2424) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2158) 
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) 
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) 
at android.widget.PopupWindow$PopupViewContainer.dispatchTouchEvent(PopupWindow.java:1682) 
at android.view.View.dispatchPointerEvent(View.java:8578) 
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4021) 
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3887) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449) 
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502) 
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468) 
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3578) 
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476) 
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3635) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449) 
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502) 
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468) 
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476) 
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449) 
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5701) 
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5675) 
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5646) 
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5791) 
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 
at android.os.MessageQueue.nativePollOnce(Native Method) 
at android.os.MessageQueue.next(MessageQueue.java:143) 
at android.os.Looper.loop(Looper.java:122) 
at android.app.ActivityThread.main(ActivityThread.java:5253) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

. 마지막 부분에 가까운 보지을 종료한다 결코 루프

+0

친절히 댓글 downvote에 대한 이유? –

+1

당신의 배열리스트가 무한한 아이템을 추가하고'for (int j = 0; j

+1

에 대해'for (int j = 0; j m0skit0

답변

4

이 :

for(int j= 0; j< arr.length;i++) 

변경 j++i++이 버그를 수정합니다.

+1

그것을 해결할 제거합니다. 어리석은 문제. thanks @ Turbo J –

+0

친절하게 downvote를 제거 –

+0

내 표가 아니지만 나를 생각 나게 해줘서 고마워. –