2009-8-28 13:18:24 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: Java heap space需要解析一个bin文件时出现了,这个异常。找了很多的解决方法都是要修改tomcat或jdk的虚拟内存之类的。但是根本解决不了问题。也有很多朋友遇到类似的问题,但大多的提出的解决方法都是修改虚拟内存之类的。可能是有的是有效的。我以前遇到过。修改了就可以了。 但这次是在一个jsp页面中读取一个文件时出现的这个异常信息。最后看到一个帖子写的好像是不能一下读取太多的内容到页面上。谁给推荐个好的解决方法呢??先谢谢了
严重: Servlet.service() for servlet jsp threw exception
java.lang.OutOfMemoryError: Java heap space需要解析一个bin文件时出现了,这个异常。找了很多的解决方法都是要修改tomcat或jdk的虚拟内存之类的。但是根本解决不了问题。也有很多朋友遇到类似的问题,但大多的提出的解决方法都是修改虚拟内存之类的。可能是有的是有效的。我以前遇到过。修改了就可以了。 但这次是在一个jsp页面中读取一个文件时出现的这个异常信息。最后看到一个帖子写的好像是不能一下读取太多的内容到页面上。谁给推荐个好的解决方法呢??先谢谢了
解决方案 »
- Hibernate非主键关联
- 关于<<struts2权威指南>>中的hellWorld
- 关于项目打包!!!!
- 怎么修改一个web项目的名称
- 各位高手帮我解决一个Spring+struts2+JPA+FreeMarker整合的错误(下面是错误信息)
- 谁能告诉我,我为什么要用java 而不用.net呢???
- 请问如何配置iReport 和 Jasperreport 整合开发(在线等待)
- 请问怎样在页面直接快速画图,能否给个例子,谢谢
- 请问这句<%=request.getContextPath()%>/main/registerAction.do"是什么意思
- tomcat4.0是不是有问题哟!
- struts表单提交的文字在页面中不能正常显示(不是乱码)
- 怎么优化浏览速度
这个肯定是内存不足,增大TOMCAT的虚拟内存在TOMCAT中查看下面的信息:
JVM
Free memory: 23.75 MB Total memory: 59.58 MB Max memory: 63.56 MB
2.优化代码,确实是不能读取太多的数据到页面上,不仅减慢速度,还增加负担。我的项目中一个页面本来要访问6次数据库,也就是和数据库建立6次连接,后来优化了代码,全部一次性读到List中,共享List中的数据。
跟踪的原因是Set内容的时候,Set获取的内容不对。
private void readBinMMBodyMultiPartRelated() {
int n=0;
int c_headerLen=0,c_dataLen=0;
String c_type="",c_id="";
byte [] c_buf;
int nEntries = m_In[m_i++]; while (n<nEntries) {
c_headerLen=readUintvar();
c_dataLen=readUintvar();
int freeze_i=m_i;
c_type=readContentTypeValue();
int c_typeLen=m_i-freeze_i; c_id="A"+n;
if (c_headerLen-c_typeLen>0) {
if ((decodeByte(m_In[m_i])==HFN_CONTENT_LOCATION) ||
(decodeByte(m_In[m_i])==HFN_CONTENT_ID) ) {
m_i++;
c_id=readTextString();
}
} /**
* Add time 2009-8-27 20:37:54
* by YDF
*/
int num = 8;
System.out.println(m_i);
m_i+=num;
MMBinContent bmmc=new MMBinContent();
bmmc.setType(c_type);
bmmc.setContentId(c_id);
bmmc.setContent(m_In,m_i,c_dataLen);
m_Message.addBinContent(bmmc);
m_i+=c_dataLen;
num+=8;
n++;
}
}
public void setContent(byte buf[], int off, int len)
{
m_iLength = len;
m_byteArray = new ByteArrayOutputStream(len);
m_byteArray.write(buf, off, len);
}
at java.io.ByteArrayOutputStream.write(Unknown Source)
at com.waytide.bindecoder.MMBinContent.setContent(MMBinContent.java:87)
at com.waytide.bindecoder.MMDecoder.readBinMMBodyMultiPartRelated(MMDecoder.java:299)出错的原因是要三次调用这个方法setContent
第三次掉用的时候出现的异常
往数组里写的内容太多了 。
再次O(∩_∩)O谢谢 各位了。