0 0

关于 Java heap space 问题5

网站使用STRUTS2+SPRING+JPA制作,为了提高首页访问,所以采用定时生成方式生成HTML静态问题

代码如下:
import java.io.*;
import java.net.*;

import org.apache.commons.io.FileUtils;
public class CreateHtml {
	 
	    public static void createHtml(String url, String filename)throws IOException {
	       URL urlc = new URL(url);
	       HttpURLConnection connection = (HttpURLConnection) urlc.openConnection();      		
	        		
	        InputStream ips = connection.getInputStream();
	        FileOutputStream fos = new FileOutputStream(filename);
	        challage(ips, fos);
	     
	        ips.close();
	        fos.close();
	    }
	    private static void challage(InputStream ips, OutputStream ops) throws IOException {
	        byte[] contents = new byte[1024];
	        int len = 0;
	        while ((len = ips.read(contents)) != -1) {
	            ops.write(contents, 0, len);
	        }
	    }
	    』



在TOMCAT工程中加了一个listener,定时执行上面的生成程序,每5分钟生成一次,一次生成50个页面,耗时1分40秒左右, 程序执行1个小时后,内存不断增加,就会报:
Java heap space
GC overhead limit exceeded
的错误,TOMCA也当掉。

请问有没有解决办法。

问题补充:各位说的方法都试过,没有解决问题! 定时执行,单次执行的时间越来越短, 如下:
start:Wed Jan 09 16:38:11 GMT+08:00 2013
end:Wed Jan 09 16:40:16 GMT+08:00 2013
start:Wed Jan 09 16:41:31 GMT+08:00 2013
end:Wed Jan 09 16:44:01 GMT+08:00 2013
start:Wed Jan 09 16:44:51 GMT+08:00 2013
end:Wed Jan 09 16:48:12 GMT+08:00 2013
start:Wed Jan 09 16:48:12 GMT+08:00 2013
end:Wed Jan 09 16:52:22 GMT+08:00 2013
start:Wed Jan 09 16:52:22 GMT+08:00 2013
2013年1月09日 13:35

8个答案 按时间排序 按投票排序

0 0

楼主的系统有没有做过压力测试?你每5分钟生成50多个页面(假设是60个),一个小时也就生成600个页面,算你一个页面1M,也就600M数据,就算全部泄漏了,也就600M。会不会是某个不常访问的页面有严重内存泄漏,加了这个功能后导致1个小时访问12次引起OOM?

另外,单次执行时间越来越短也说明可能是有某些东西被缓存了,导致某些页面执行速度加快。

2013年1月11日 13:26
0 0

能找到方法,获得内存 大小,占用量, 然后 加以  清空 等操作吗?

2013年1月10日 10:14
0 0

tomcat启动项添加
JAVA_OPTS='-Xms512m -Xmx4096m -XX:MaxPermSize=128m -XX:-UseGCOverheadLimit -XX:+UseConcMarkSweepGC'

Xms堆是初始大小  Xmx是堆最大值  通常小于主机内存80%
试试

2013年1月09日 22:33
0 0

要保证正确关闭资源。

2013年1月09日 17:37
0 0

connetion.disconnect()

2013年1月09日 15:58
0 0

1:增加server memory
2:java method中,添加
try{}finally{}

2013年1月09日 15:33
0 0

两种方法:一:服务器增加内存。
          二:

在生成静态页面的代码最后面添加System.gc()(或者在定时执行的代码最后面加,两个都可以);这样内存释放会比较快。

2013年1月09日 14:25
0 0

ips.close(); 
fos.close(); 

放到 try {

}finally {
   ips.close(); 
   fos.close(); 
}

2013年1月09日 13:56

相关推荐

    解决Java_heap_space问题

    ### 解决Java_heap_space问题:深入理解与策略 在Java应用程序开发与运行过程中,经常会遇到一个常见的内存管理问题——“Java heap space”。这个问题通常表现为Java虚拟机(JVM)在执行过程中因可用堆内存不足而...

    java抛java heap space

    Java Heap Space 异常是 Java 开发者经常遇到的一个问题,了解其产生的原因以及如何有效地解决这个问题对于保证应用程序稳定运行至关重要。通过合理设置 JVM 参数、优化代码逻辑等方式,可以有效地避免或减少此类...

    java错误处理:java.lang.OutOfMemoryError: Java heap space

    **描述:“搜集整理关于java错误处理:java.lang.OutOfMemoryError: Java heap space”** - 描述提到了对这个问题的相关资料进行整理,这意味着该文档将提供如何识别、分析并解决此类问题的方法。 #### 详细解析 ...

    java.lang.OutOfMemoryError: Java heap space 解决方法

    "Java.lang.OutOfMemoryError: Java heap space 解决...Java.lang.OutOfMemoryError: Java heap space 是一种常见的 Java 错误,解决该问题需要从多方面入手,包括调整 JVM 的堆大小、调整 Tomcat 的配置、优化程序等。

    关于(java heap space)内存溢出的解决办法

    在Java编程中,"java heap space"内存溢出是一个常见的问题,它通常发生在应用程序尝试分配超过JVM堆内存限制的对象时。这个问题对于任何Java开发者来说都至关重要,因为如果不妥善处理,可能会导致程序崩溃。以下是...

    tomcat 解决Java heap space问题

    标题中的“tomcat 解决Java heap space问题”指的是在运行Apache Tomcat服务器时,由于Java应用程序内存分配不当或资源消耗过大导致的“Java heap space”错误。这个问题通常出现在Java虚拟机(JVM)试图为对象分配...

    Myeclipse下java.lang.OutOfMemoryError Java heap space的解决

    通过以上方法,通常可以有效解决Myeclipse下出现的`java.lang.OutOfMemoryError: Java heap space`问题。需要注意的是,在调整JVM参数时应当根据实际情况合理设置,以免造成资源浪费或者性能下降。同时也要持续关注...

    Java heap space 解决方法

    根据描述中的内容,“Java heap space 解决方法,解决tomcat堆栈溢出问题”,我们可以推断出问题的根源在于Tomcat服务器在运行时出现了堆内存溢出的情况。 ##### 2. 解决方案 为了有效地解决这个问题,我们需要调整...

    java heap space解决方法

    ### Java Heap Space 解决方法详解 #### 一、引言 在Java应用程序运行过程中,经常会遇到“Out of Memory Error: Java Heap Space”的错误提示。这种错误通常发生在Java虚拟机(JVM)的堆内存不足时,导致程序无法...

    编译时出现java.lang.OutOfMemoryError Java heap space异常

    ### 编译时出现java.lang.OutOfMemoryError Java heap space异常 #### 一、问题概述 在进行Java项目编译的过程中,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这种异常。这类异常通常表明Java虚拟机...

    java解决nested exception is java.lang.OutOfMemoryError Java heap space

    Java程序在运行过程中可能会遇到各种异常,其中"nested exception is java.lang.OutOfMemoryError: Java heap space"是一个常见的问题,通常发生在程序试图分配超过堆内存限制的空间时。这个错误表明Java虚拟机(JVM...

    An internal error occurred during: \"Building workspace\". Java heap space

    Java heap space" 描述的是一个常见的Eclipse集成开发环境(IDE)中的问题,当用户尝试构建工作区时遇到内存不足的情况。这个错误表明Eclipse在执行任务时耗尽了Java虚拟机(JVM)分配的堆内存。以下是关于这个问题...

    kettle内存溢出(Java heap space)以及解决方法.docx

    这种错误通常表现为"Java heap space",意味着Java虚拟机(JVM)分配的内存不足以执行任务。 **Java堆空间的原理** Java堆是Java虚拟机中最大的一块内存区域,用于存储对象实例。当程序创建新的对象并分配给堆时,...

    java虚拟机OutOfMemoryError:Java heap space堆dump文件

    java虚拟机OutOfMemoryError:Java heap space堆dump文件,可以直接用来分析。

    记录java.lang.OutOfMemoryErrorJava heap space的情况.docx

    Java虚拟机(JVM)是Java应用程序的运行环境,它负责执行字节码并管理内存...通过上述方法,可以有效地预防和解决`java.lang.OutOfMemoryError: Java heap space`问题,优化JVM内存管理,提升应用程序的稳定性和性能。

    如何解决项目中java heap space的问题

    如何解决项目中java heap space的问题 在Java项目中,java heap space的问题是非常常见的,尤其是在大型项目中,内存溢出导致的OOM(Out of Memory)问题经常会出现。本文将详细介绍如何解决项目中java heap space...

    java[1].lang.OutOfMemoryError_Java_heap_space错误及处理办法

    `java.lang.OutOfMemoryError: Java heap space`错误是Java开发者经常会遇到的一个问题。通过理解错误产生的根本原因,并采取相应的措施来优化内存使用,可以有效地提高程序的性能和稳定性。希望本文提供的解决策略...

Global site tag (gtag.js) - Google Analytics