高手请进100分问题(java.lang.OutOfMemoryError perGen space)

jackyluck 2007-10-27 11:23:11
我现在正进行一个项目,运行技术是: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();
...全文
573 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabbitbug 2007-11-30
  • 打赏
  • 举报
回复
修改:MaxPermSize参数
wazj0517 2007-11-29
  • 打赏
  • 举报
回复
我觉得应该原来就有的吧,我开始一个项目用TOMCAT会出OutOfMemoryError ,换jboss就OK了
mxm_1123 2007-10-27
  • 打赏
  • 举报
回复
在 run.bat 中加入:-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

因为项目中引用了很多的 jar 包,而这些 jar 包中的 class 信息会被 JBoss 的 class loader 加载到 PermGen space 区域,在 JVM 默认的情况下,该部分空间的大小只有 4M,在 jar 包非常多的情况下,显然是不够用的,所以通过 -XX:MaxPermSize=256m 指定最大值后即可解决问题。

另外,如果 heap 内存不足出现 java.lang.OutOfMemoryError: Java heap space 时,可以通过 -Xmx512m 指定最大 heap 内存来解决这样的问题。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧