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.lang.OutOfMemoryError: Java heap space 是 Java 中的一个常见错误,它发生时,Java 虚拟机 (JVM) 无法分配对象,因为堆空间不足。下面是解决该问题...
### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....
Java程序在运行过程中可能会遇到各种异常,其中"nested exception is java.lang.OutOfMemoryError: Java heap space"是一个常见的问题,通常发生在程序试图分配超过堆内存限制的空间时。这个错误表明Java虚拟机(JVM...
### Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...
### 编译时出现java.lang.OutOfMemoryError Java heap space异常 #### 一、问题概述 在进行Java项目编译的过程中,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这种异常。这类异常通常表明Java虚拟机...
java.lang.OutOfMemoryError处理错误 java.lang.OutOfMemoryError是Java虚拟机(JVM)中的一种常见错误,发生这种错误时,JVM将无法继续运行,程序将崩溃。这种错误的出现通常是由于Jvm的内存不足或内存泄露导致的...
java虚拟机OutOfMemoryError:Java heap space堆dump文件,可以直接用来分析。
Java中的`java.lang.OutOfMemoryError`是一种常见的运行时错误,通常表示应用程序在尝试分配内存时遇到了问题。根据提供的信息,这个错误主要涉及到两个方面:`PermGen space`和`Java heap`,并且与Tomcat服务器相关...
java.lang.OutOfMemoryError: PermGen space 解决方案
java.lang.OutOfMemoryError: Java heap space 解决方法
### Java.lang.OutOfMemoryError:Java Heap Space 错误及处理办法 在Java应用程序开发与维护过程中,经常会遇到`java.lang.OutOfMemoryError: Java heap space`这一异常情况。该异常通常表明Java虚拟机(JVM)的堆...
Java内存溢出问题,全称为Java OutOfMemoryError,是Java开发者经常遇到的运行时异常。内存溢出通常发生在程序运行过程中,系统无法为运行的应用程序分配足够的内存资源,导致程序无法正常执行。理解并解决Java内存...
《深入剖析Java OutOfMemoryError:从问题到解决方案》 在IT行业中,内存管理是优化系统性能的关键环节。当应用程序遇到"OutOfMemoryError"(简称OOM),这意味着Java虚拟机(JVM)已耗尽了分配给它的内存资源,...
在Java应用程序运行过程中,"java.lang.OutOfMemoryError: PermGen space"错误是常见的一个问题,尤其是在使用Tomcat这样的Java应用服务器时。这个错误表明应用程序在 PermGen 区域(Permanent Generation)耗尽了...
### Java.lang.OutOfMemoryError: PermGen space 及其解决方法 #### 一、PermGen space 概述 在Java虚拟机(JVM)中,PermGen space(永久代)是用于存储类的信息、常量、静态变量等数据的区域。在Java 8之前,Perm...
Eclipse 中通过 Tomcat 运行 J2EE 项目 java.lang.OutOfMemoryError PermGen space 的解决方案 在 Eclipse 中通过 Tomcat 运行 J2EE 项目时,可能会出现 java.lang.OutOfMemoryError: PermGen space 异常,这是由于...
Java中的“内存不足OOM (Out Of Memory):java.lang.OutOfMemoryError”是一个常见的运行时错误,它表示Java虚拟机(JVM)在尝试分配新的对象或数据结构时,发现系统内存不足以完成此操作。这个问题通常发生在程序...
Java异常解决之OutOfMemoryError Java 中的 OutOfMemoryError 异常是指 Java 虚拟机在运行时无法申请到足够的内存空间,导致程序崩溃的错误。该错误可以发生在 Java 堆、虚拟机栈、本地方法栈和直接内存等几个运行...