android - java.lang.OutOfMemoryError at java.util.ArrayList.add -


i using following code reading items xml file:

try {             inputstream istream = assetmanager.open("files/items.xml");             documentbuilder builder = documentbuilderfactory.newinstance().newdocumentbuilder();             document doc = builder.parse(istream);             doc.getdocumentelement().normalize();             nodelist nlist = doc.getelementsbytagname("item");             system.out.println();             (int temp = 0; temp < nlist.getlength(); temp++) {                 node nnode = nlist.item(temp);                 if (nnode.getnodetype() == node.element_node) {                     element eelement = (element) nnode;                     string name = gettagvalue("name", eelement);                     string family = gettagvalue("family", eelement);                     _shahidviewmodels.add(new shahidviewmodel(                             name,                             family                     ));                 }             }             istream.close();          } catch (exception e) {             e.printstacktrace();         } 

the following error occurs:

2109-2109/? e/androidruntime﹕ fatal exception: main     java.lang.outofmemoryerror             @ java.util.arraylist.add(arraylist.java:114)             @ addpt.resultsearchactivity.filldata(resultsearchactivity.java:76)             @ addpt.resultsearchactivity.oncreate(resultsearchactivity.java:54)             @ android.app.activity.performcreate(activity.java:5104)             @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1080)             @ android.app.activitythread.performlaunchactivity(activitythread.java:2144)             @ android.app.activitythread.handlelaunchactivity(activitythread.java:2230)             @ android.app.activitythread.access$600(activitythread.java:141)             @ android.app.activitythread$h.handlemessage(activitythread.java:1234)             @ android.os.handler.dispatchmessage(handler.java:99)             @ android.os.looper.loop(looper.java:137)             @ android.app.activitythread.main(activitythread.java:5041)             @ java.lang.reflect.method.invokenative(native method)             @ java.lang.reflect.method.invoke(method.java:511)             @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793)             @ com.android.internal.os.zygoteinit.main(zygoteinit.java:560)             @ dalvik.system.nativestart.main(native method) 

what error mean? , how solve problem?

build.gradle:

android {     compilesdkversion 21     buildtoolsversion "21.1.1"     dexoptions {         javamaxheapsize "4g"     }     defaultconfig {         applicationid "ad.dp.t"         minsdkversion 14         targetsdkversion 21         versioncode 1         versionname "1.0"     }     buildtypes {         release {             minifyenabled false             proguardfiles getdefaultproguardfile('proguard-android.txt'), 'proguard-rules.pro'         }     }  } 

please provide me solution. not have ideas solve problem

the number of records in items.xml was: 150000 record

its not way pull 1000 of rows once , all, introduce custom xml parsing pagination or use third party if any. load 50 items file , if user want load more data load next 50 items override outofmemory in activity or fragment safe side, best approach should says if list contains more 200 items remove 1st 50 items , add new items maintain max 200 items in list, other safe checks start or end of file, list size should consider doing not out of memory exception


Comments

Popular posts from this blog

shopping cart - Page redirect not working PHP -

php - How to modify a menu to show sub-menus -

python - Installing PyDev in eclipse is failed -