Java中不再需要关心Object(相对C++而言这的确省去了许多烦恼)生存期管理,因为我们有了垃圾收集器GC! 引入GC带来了效率,我们专心编写业务逻辑而不必随 时为内存管理问题担忧。不过,在Java中如果程序设计有误,对于简单的问题也会导致新问题出现,这就是OutOfMemoryError(简称OOM)。
举几个例子。
1. 文件上传类。由于没有考虑到大文件的情况,这个类在上传大文件时会抛OOM错误。原来代码中直接 new Byte[filesize]。一下子在堆上申请这么多内存能不出错吗?
2. 一个含有大量图形类的UI界面。每次刷新时都要把整个背景new ImageIcon,当界面为了显示级联关系非常多的N个图形时,这个ImageIcon的size非常之大,并且由于界面的repaint事件发生比较 频繁,以至于连续申请ImageIcon时导致OOM错误。
3. 执行一条SQL语句,从数据库查出32183条记录,返回一个长度32183的对象数组。由服务器(中间件)传回UI端,出现OOM。在反序列化的过程实 际上也是在new Object。关于反序列化及readObject请参阅effective in Java。
4. 考虑把界面上110万单元格(5667行,197列)的数据导出到EXCEL文件
通过配置Java Plugin 参数,我们的程序性能得以改善但不能解决OOM。但是多数情况下,OOM是因为我们忽视了问题的潜在规模。有时候也因为太简单太贪婪的代码(一次申请太多的内存)导致,再有就是无意识的内存泄漏问题
解决途径:
1. 生产者-消费者模型+内存池
2. 消除已确认的内存泄漏问题
3. 在设计和编程时就开始关注性能问题。
分享到:
相关推荐
java.lang.OutOfMemoryError: Java heap space 解决方法
搜集整理关于java错误处理:java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: Java heap space 资料整理
java解决nested exception is java.lang.OutOfMemoryError Java heap space 解决OOM
Myeclipse下java.lang.OutOfMemoryError Java heap space的解决
java虚拟机OutOfMemoryError:Java heap space堆dump文件,可以直接用来分析。
报错 java.lang.OutOfMemoryError: PermGen space 报错 java.lang.OutOfMemoryError: Java heap 启动报错java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler JAVA_OPTS="-server -Xms800m ...
java.lang.OutOfMemoryError处理错误
java.lang.OutOfMemoryError: PermGen space 解决方案
编译时出现java.lang.OutOfMemoryError Java heap space异常.
java.lang.OutOfMemoryError: Java heap space 解决方法
NULL 博文链接:https://geyubin.iteye.com/blog/779330
java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法
Caused by: java.lang.OutOfMemoryError: PermGen space解决方案, avax.servlet.ServletException: java.lang.OutOfMemoryError: PermGen space at org.apache.jasper.servlet.JspServlet.service(JspServlet.java...
内存不足OOM java.lang.OutOfMemoryError.
java.lang.OutOfMemoryError: PermGen space及其解决方法,解决项目太大tomcat内存溢出
记录java.lang.OutOfMemoryError:Java heap space的情况 文章内容: 一.问题描述+原因分析+解决方案 二.JVM调优说明 三.Tomcat添加到jvisualvm监控
java.lang.OutOfMemoryError: PermGen space
Tomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的java.lang.OutOfMemoryError: PermGenTomcat给我的...
在本篇文章中,我们给大家分享了关于解决Java异常之OutOfMemoryError的问题的方法,有此需要的朋友们学习下。