高手请进100分问题(java.lang.OutOfMemoryError perGen space)
我现在正进行一个项目,运行技术是:NetBean+Hibernate+jboss portal +Jsp + JsF + iReport
功能描述:当用户在jsp页面按查找Button时调用管理Bean的一个动作方法(pring()),然后反回面页显示数据
,同时显示一条超连接,当用户按连接就调用一个Servelt下载pdf文件
问题描述:1.按查找Button在页面显示数据后,2.再按下载连接就报:java.lang.OutOfMemoryError PermGen space 错
经调试发现:如果单独做下载或显示荔能是没有问题的,但如果先做了显示功能后再做下载就报outofmenoryerror错了
高手们帮我看下
代码:
//=============================管理bean的spring()===================================
Configuration configuration = new Configuration().configure();
SessionFactory SessionFactory =configuration.buildSessionFactory();
Session session = SessionFactory.openSession();
Transaction tran = session.beginTransaction();
Query query = session.createQuery("from per as c where c.namet=:pername");
query.setString("pername",this.getName());
List pers = query.list();
this.setPers(pers);
session.close();
this.setMessage("Pring ok");
//=================================下载功能:Servelt==================================
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment;filename="+"iReport.pdf");
String name =request.getParameter("name2");
String info =request.getParameter("info");
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/manage", "root", "jacky");
//ireport 提拱的代码
JasperReport jasperReport;
JasperPrint jasperPrint;
jasperReport = JasperCompileManager.compileReport("d:/MyFristIreport.jrxml");
HashMap map = new HashMap();
map.put("sq",this.getName());
//先做显示后做下载功能时就这这里过不了,单调用时没有事
jasperPrint = JasperFillManager.fillReport(jasperReport,map,con);
byte[] b = JasperExportManager.exportReportToPdf(jasperPrint);
java.io.OutputStream os = response.getOutputStream();
os.write(b,0,b.length);
os.flush();
os.close();