用jsp 做了一个图片预览功能,图片用servlet进行调用,在多个客户端同时访问的时候,tomcat 报内存溢出。 以下是报的错误。2012-8-25 0:04:43 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet showImage threw exception
java.lang.OutOfMemoryError
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:198)
at com.test.ShowImageServlet.doGet(ShowImageServlet.java:43)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.anychart.servlet.ResourceFilter.doFilter(ResourceFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
以下是源码
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
FileInputStream hFile = null;
OutputStream toClient = null;
try{
String fileid= request.getParameter("fileid");
FaxFile ff = FaxService.getFaxFileById(fileid);
Xml xml = new Xml();
String path = xml.getKeyValue().get("path").toString();//存放文件的路径
String saveName = ff.getSaveName();
String newPath = path+saveName;
//FileInputStream
hFile = new FileInputStream(newPath); // 以byte流的方式打开文件 d:\1.gif
int i=hFile.available(); //得到文件大小
byte data[]=new byte[i];
hFile.read(data); //读数据
hFile.close();
response.setContentType("image/*"); //设置返回的文件类型
toClient=response.getOutputStream(); //得到向客户端输出二进制数据的对象
toClient.write(data); //输出数据
toClient.close();
}
catch(Exception e) //错误处理
{
e.printStackTrace();
System.out.println("图片显示失败了");
// PrintWriter toClient = response.getWriter(); //得到向客户端输出文本的对象
// response.setContentType("text/html;charset=gb2312");
// toClient.write("无法打开图片!");
// toClient.close();
}finally{
if(hFile!=null){
try{
hFile.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(toClient!=null){
try{
toClient.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
---
不知道什么原因 找了两天了 还是报错
问题补充:这个java.lang.OutOfMemoryError 报的有的出乎意外 tomcat内存大小也进行设置了,做过一个测试,如果将服务器重启(注意不是tomcat)以后,同时访问的次数还能多点,如果直接重启tomcat,访问一会内存就溢出了,再访问一下tomcat直接退出了,很是郁闷,用JProfiler进行了一下跟踪,但是对JProfiler用的不熟悉,没有弄明白。
问题补充:tomcat 自动退出留下的
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 551592 bytes for Chunk::new
# Possible reasons:
# The system is out of physical RAM or swap space
# In 32 bit mode, the process size limit was hit
# Possible solutions:
# Reduce memory load on the system
# Increase physical memory or swap space
# Check if swap backing store is full
# Use 64 bit Java on a 64 bit OS
# Decrease Java heap size (-Xmx/-Xms)
# Decrease number of Java threads
# Decrease Java thread stack sizes (-Xss)
# Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
# Out of Memory Error (allocation.cpp:317), pid=256, tid=5812
#
# JRE version: 6.0_26-b03
# Java VM: Java HotSpot(TM) Server VM (20.1-b02 mixed mode windows-x86 )
相关推荐
### Tomcat内存溢出总结 在生产环境中,Tomcat服务器如果配置不当,很容易出现内存溢出问题。这类问题不仅会影响应用程序的稳定运行,还可能导致服务不可用。本文将基于日常经验及查阅的相关资料,对几种常见的内存...
总结来说,解决由JSP页面引发的Tomcat内存溢出问题,通常需要从控制session的生命周期、调整JSP页面行为,以及优化应用配置等多方面进行。合理配置Web容器和应用程序,以及适时的监控和分析,是避免内存溢出的有效...
《JSP+Servlet+Tomcat应用开发从零开始学》这本书是针对初学者设计的一本教程,旨在帮助读者从零基础开始学习如何使用JavaServer Pages(JSP)、Servlet和Apache Tomcat服务器进行Web应用程序的开发。JSP、Servlet和...
本文将深入探讨“JSP文件在线预览”这一主题,涵盖其核心概念、实现原理以及相关的技术栈。 首先,理解JSP文件的本质是关键。JSP文件是由HTML、CSS和Java代码混合编写的,服务器端执行Java代码并将其结果转换为HTML...
《JSP+Servlet+Tomcat应用开发从零开始学》是由林龙编著的一本针对初学者的IT技术书籍,主要介绍了使用Java的Web开发技术,包括JSP、Servlet和Tomcat服务器。这本书旨在帮助读者从零基础开始,逐步掌握Web应用程序的...
JSP+Servlet+Tomcat应用开发从零开始学_完整版 PDF电子书下载 带书签目录JSP+Servlet+Tomcat应用开发从零开始学_完整版 PDF电子书下载 带书签目录JSP+Servlet+Tomcat应用开发从零开始学_完整版 PDF电子书下载 带书签...
本文将介绍Tomcat内存溢出的原因、常见情况以及如何调整内存大小以预防和解决内存溢出问题。 ### Tomcat内存设置问题 在使用Java程序从数据库中查询大量数据或是在Web应用服务器(如Tomcat、JBoss、WebLogic等)...
JSP+Servlet+Tomcat应用开发从零开始学 这本书给的源码项目很多功能不能实现,我基本上都实现了,唯一还没实现的是立即购买的问题,其实只需要在前端把那个控件不显示就行,数据库脚本也有,做完后我不敢独享,希望...
网上书店系统是一个典型的Web应用程序,它使用了JavaServer Pages(JSP)、MySQL数据库和Tomcat应用服务器这三者的核心技术来构建。以下是对这些技术及其在构建网上书店系统中的应用的详细说明: **JSP(JavaServer...
《基于JSP+MySQL+Tomcat的学生信息管理系统详解》 在信息技术飞速发展的今天,学生信息管理系统的构建已经成为教育机构日常运营的重要组成部分。本系统利用Java Web技术中的JSP(JavaServer Pages)、javabean以及...
总结,"jsp.rar_JSP TOMCAT SQL_jsp sql_jsp sql tomcat_tomcat server jsp_"这个项目涵盖了JSP动态网页技术、Tomcat服务器的使用、SQL Server数据库的管理和JSP与SQL的交互等多个关键知识点,是一个综合性的Web应用...
运行环境:jdk1.6 tomcat 5.0以上版本 mysql 5.0版本以上 myeclipse 6.0版本以上 用jsp+mysql+tomcat写的简单bbs论坛。实现注册,登录,发帖,回帖,后台管理员管理前台等功能。并且含有配置过程哦!
Beginning JSP,JSF and Tomcat 书中源码 Beginning JSP,JSF and Tomcat 书中源码
"jsp+sql+tomcat招生系统"是一个基于Java Web技术构建的应用程序,主要面向教育机构或学校用于管理和处理招生流程。这个系统的核心组件包括JSP(JavaServer Pages)、SQL(Structured Query Language)以及Tomcat...
基于jsp+servlet+tomcat+mysql的人事管理系统 基于jsp+servlet+tomcat+mysql的人事管理系统 基于jsp+servlet+tomcat+mysql的人事管理系统 基于jsp+servlet+tomcat+mysql的人事管理系统 基于jsp+servlet+tomcat+mysql...
接下来,我们讨论防止Tomcat内存溢出的措施。内存溢出,特别是"PermGen space"和"heap space"类型的,可能导致服务器崩溃。当遇到此类问题时,可通过修改Tomcat的启动脚本来增加内存分配。在Tomcat的bin目录下的...