最近程序做的程序出现一个bug,具体错误如下:

java.lang.NumberFormatException: unable to parse 'null' as integer
at java.lang.Integer.parseInt(Integer.java:356)
at java.lang.Integer.parseInt(Integer.java:332)
at com.sarnath.study.entity.LoginPerson.getUserDollar(LoginPerson.java:67)
at com.sarnath.study.DiscussActivity.downloadTask(DiscussActivity.java:513)
at com.sarnath.study.DiscussActivity.onClick(DiscussActivity.java:250)
at android.view.View.performClick(View.java:2538)
at android.view.View$PerformClick.run(View.java:9152)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)

经过检查发现,在存放数据的实体类中,使用了大量的静态变量,且整个工程的数据库一直是处于打开状态,并没有在使用完毕及时关闭,在和朋友讨论过后总结了一下几个内存溢出经常发生的原因。上面错误我的修改方式是将静态变量全部以getter 和setter 的方式对数据进行存放操作,数据库在使用结束后及时关闭,另外几种方式暂时还没有尝试。

一般的应用程序出现内存的溢出,主要来自:
1、程序写的不规范,太多的线程、大服务一直存在、大量的循环
2、生成的对象太多没有及时的去释放他,也就是在使用完之后记得将不用的对象设置为null
3、静态变量中存放大量的数据,如上百长度的静态数组
4、不使用的图片对象没有使用recyle手动回收,大图片太多,显示没有进行压缩处理
5、数据库或是curcor没有关闭,也会造成对内存资源的浪费