0 0

不显示删除回复显示所有回复显示星级回复显示得分回复 java内存溢出Exception in thread "Thread-0"java.lang.OutOf3

我做一个网页静态化的程序,用一个线程以URL方式读取一个地址,如果里面还有链接地址就再往里面读,一层层递归,把网页写到不同的html文件中,html文件名为当前时间,用个HashMap保存 <url,fileName>,增加判断保证每个地址只读写一次。循环代码如下:
//url:连接地址,path:保存文件名
public void down(String realmName,URL url,String charsetName,Map<String,String> urlMap,Map <String,String>fileMap,File filePlace,String fileName){
URLConnection conn=null;
InputStream is=null;
BufferedReader br=null;
BufferedWriter bw=null;

try {
conn = url.openConnection();
is=conn.getInputStream();
br=new BufferedReader(new InputStreamReader(is,charsetName));
if(!filePlace.exists()){
filePlace.mkdirs();
}
bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePlace.getPath()+File.separator+fileName)));
String msg=br.readLine();
while(msg!=null){
String ss=msg;
if(hasATag(ss)){ //判断有没有<a href='xxxx'>的地址
ss=ss.replaceAll("\\s+"," ");
ss=cutOutString(ss);
if(ss.indexOf("javascript")==-1){
String fileName2=new Date().getTime()+".html";
URL urlpath=null;
if(ss.startsWith("/")){
urlpath=new URL(realmName+ss);
}else{
urlpath=new URL(realmName+"/"+ss);
}

if(!fileMap.containsKey(urlpath.toString())){
msg=msg.replace(ss, fileName2);
fileMap.put(urlpath.toString(),fileName2);
}else{
msg=msg.replace(ss, fileMap.get(urlpath.toString()));
}
System.out.println(msg);
//System.out.println(fileMap);
if(!urlMap.containsKey(urlpath.toString())){
urlMap.put(url.toString(),filePlace.getPath()+File.separator+fileName);
filePlace=new File(filePlace.getPath()+File.separator);
System.out.println("-----------------");
down(realmName,urlpath,"utf-8",urlMap,fileMap,filePlace,fileName2); 

}
}
}
bw.write(msg);
bw.newLine();
bw.flush();
msg=br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(bw!=null){
bw.flush();
bw.close();
}
if(br!=null){
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}


}
}

读a 地址写出了5000多个html没报任何错误,读b地址写出1200多个的时候就报错,而且每次都报错,我的eclipse内存配置如下-vmargs -Xms64M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=512M
我试着增加内存到1024M 结果还是一样报错。纠结了好久了,不知道怎么解决,希望各位帮小弟指点指点,谢谢!
2012年3月21日 15:08

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

0 0

eclipse内存配置那是eclipse的
你运行的程序内存配置要写在运行程序的地方。
eclipse中Run Configurations—>Arguments
或者你直接cmd上用java命令跑class文件 java -Xms512M -Xmx512M -XX:PermSize=128M -XX:MaxPermSize=128M 类名

2012年3月21日 16:36

相关推荐

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

    Java程序在运行过程中可能会遇到各种异常,其中"nested exception is java.lang.OutOfMemoryError: 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错误处理:java.lang.OutOfMemoryError: Java heap space

    ### Java 错误处理:java.lang.OutOfMemoryError: Java heap space 在Java应用程序开发过程中,经常遇到的一个问题就是内存溢出错误,特别是在处理大量数据或长时间运行的应用时。其中,“java.lang....

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

    "Java.lang.OutOfMemoryError: Java heap space 解决方法" Java.lang.OutOfMemoryError: Java heap space 是 Java 中的一个常见错误,它发生时,Java 虚拟机 (JVM) 无法分配对象,因为堆空间不足。下面是解决该问题...

    Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException)

    内存溢出(Out Of Memory Error,简称OOM)通常发生在程序尝试分配内存但系统无法提供足够空间时。在Java中,这主要与JVM(Java虚拟机)的内存模型有关,该模型包括堆(Heap)、栈(Stack)、方法区(Method Area)...

    如何解决java.lang.StackOverflowError

    在Java编程中,`java.lang.StackOverflowError` 是一个常见的运行时异常,它通常发生在程序执行过程中,当Java虚拟机(JVM)的调用栈溢出时。调用栈是每个线程用来存储方法调用信息的数据结构,当递归调用过深或者...

    java.lang.OutOfMemoryError解决办法

    Java中的`java.lang.OutOfMemoryError`是一种常见的运行时错误,通常表示应用程序在尝试分配内存时遇到了问题。根据提供的信息,这个错误主要涉及到两个方面:`PermGen space`和`Java heap`,并且与Tomcat服务器相关...

    JAVA内存溢出问题总结

    JAVA内存溢出问题总结 JAVA 内存溢出问题是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用的内存大于虚拟机能提供的最大内存。内存溢出问题可以从容器和程序类两个方面进行排查,容器问题...

    tomcat内存溢出解决办法,错误信息:java.lang.OutOfMemoryError:PermGen space

    tomcat内存溢出解决办法,错误信息:java.lang.OutOfMemoryError:PermGen space 参考该文档可快速解决内存溢出的问题,服务器:tomcat

    完美解决java读取excel内存溢出问题.rar

    在Java开发中,处理大型Excel文件时,可能会遇到内存溢出的问题。这通常是由于Java的默认内存设置不足以处理大量数据导致的。本解决方案主要针对使用Apache POI库进行Excel读取时遇到的这类问题。 首先,Apache POI...

    OutOfMemoryError_8种典型案例分享

    java.lang.OutOfMemoryError是Java开发者在工作中经常会遇到的一个内存错误。该错误通常发生在JVM无法为新对象分配足够的堆内存时。由于内存问题导致的程序崩溃给开发和维护带来了极大的挑战,而解决这类问题需要对...

    JAVA内存溢出详解.doc

    Java内存溢出(Out Of Memory,OOM)是Java应用程序运行时常见的问题,它通常发生在程序对内存需求超过了Java虚拟机(JVM)所能提供的可用内存时。本文将深入探讨Java内存溢出的原因、表现以及如何解决。 1. **Java...

    内存溢出解决

    当程序运行时分配给它的内存空间不足以支撑其正常运行时,就会出现“内存溢出”(Out of Memory Error,简称OOM)。这通常发生在堆内存或方法区等内存区域耗尽时。对于Java应用而言,了解如何有效识别并解决内存溢出...

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

    然而,在处理大量数据时,Kettle可能会遇到内存管理问题,导致Java堆空间溢出错误。这种错误通常表现为"Java heap space",意味着Java虚拟机(JVM)分配的内存不足以执行任务。 **Java堆空间的原理** Java堆是Java...

    完美解决java.lang.OutOfMemoryError处理错误的问题

    Java中的`java.lang.OutOfMemoryError`是一种常见的运行时错误,通常表示应用程序在尝试分配新的内存对象时,Java虚拟机(JVM)无法找到足够的连续内存空间来完成操作。这个错误可能由多种原因引起,主要分为堆内存...

    java内存溢出原因

    Java内存溢出(Out Of Memory, OOM)是开发者在编程过程中经常遇到的问题,尤其是在处理大量数据或长时间运行的应用程序时。本篇文章将详细解析三种常见的Java内存溢出类型:JVM PermGen space溢出、JVM heap space...

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

    ### Java.lang.OutOfMemoryError:Java Heap Space 错误及处理办法 在Java应用程序开发与维护过程中,经常会遇到`java.lang.OutOfMemoryError: Java heap space`这一异常情况。该异常通常表明Java虚拟机(JVM)的堆...

    java IBM websphere 内存溢出 javacore deapdump CPU内存分析工具

    Java IBM WebSphere应用服务器在运行过程中可能会遇到各种性能问题,其中最常见的挑战之一是内存溢出。内存溢出是指应用程序消耗的内存超过了系统所能提供的限制,导致程序崩溃或性能急剧下降。在这种情况下,开发者...

    Java内存溢出解决办法

    Java内存溢出问题,全称为Java OutOfMemoryError,是Java开发者经常遇到的运行时异常。内存溢出通常发生在程序运行过程中,系统无法为运行的应用程序分配足够的内存资源,导致程序无法正常执行。理解并解决Java内存...

Global site tag (gtag.js) - Google Analytics