全部产品
云市场
    java_lang_OutOfMemoryError

java_lang_OutOfMemoryError

更新时间:2018-04-19 20:40:10

问题分析:

OutOfMemoryError是在当程序需要请求一块内存,而java虚拟机进行垃圾回收机制GC后无法再提供要求的内存时抛出此异常。

解决方案:

OutOfMemoryError是在当程序需要请求一块内存,而java虚拟机进行垃圾回收机制GC后无法再提供要求的内存时抛出此类异常,程序已经占用的内存到达系统限制的应用内存上线无法再申请到所需的内存空间。需要重点检查代码中是否有死循环或递归调用。检查是否在循环重复产生占用大内存的新对象。是否有一次获得大量数据的查询存到内存中,应当尽量用分页的方式查询。是否List、Map等集合对象使用后未清除,而集合对象有对对象的引用导致对象不能被GC回收,是否有内存泄露等。建议使用深度性能测试检测内存泄漏等问题。

代码示例:

  1. // 在循环外初始化大对象list并在循环内重复使用,并清空集合类、置null
  2. List list=new ArrayList<Object>();
  3. for(Object tmp:otherList){
  4. // to do something
  5. }
  6. list.clear();
  7. list=null;

参考文献:

1.https://developer.android.com/reference/java/lang/OutOfMemoryError.html

2.https://source.android.com/compatibility/android-cdd.html#7_6_memory_and_storage (安卓系统对程序所使用内存的最大值限制,参见3.7节的表格,或直接参考文献3)

3.https://drive.google.com/file/d/0B7Vx1OvzrLa3Y0R0X1BZbUpicGc/view?usp=sharing(安卓系统对内存最大值限制)