您的位置:首页 > 编程语言 > Java开发

关于java 内存溢出问题

2012-03-14 17:34 295 查看
最近程序做的程序出现一个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没有关闭,也会造成对内存资源的浪费
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息