gpt4 book ai didi

java - fillReport 函数期间 PermGen Space 错误

转载 作者:行者123 更新时间:2023-12-01 15:29:06 24 4
gpt4 key购买 nike

我在执行时遇到以下 PermGen space 错误

    JasperFillManager.fillReport(reportFile.getPath(), parameters, conn);

在以下代码块中:

    compileFileName = parameters.get("reportName").toString();
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();

ServletContext context = (ServletContext) externalContext.getContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();

ReportConfigUtil.compileReport(context, getCompileDir(), getCompileFileName());

File reportFile = new File(ReportConfigUtil.getJasperFilePath(context, getCompileDir(), getCompileFileName()+".jasper"));


Class.forName(ReportsConstants.DRIVER);
Connection conn = DriverManager.getConnection(ReportsConstants.DB_ACCESS_URL, ReportsConstants.DB_ACCESS_USER_NAME, ReportsConstants.DB_ACCESS_PASSWORD);

parameters.put("BaseDir", reportFile.getParentFile());

JasperPrint jasperPrint = JasperFillManager.fillReport(reportFile.getPath(), parameters, conn);

我收到的错误如下:

    Caused by: javax.faces.el.EvaluationException: java.lang.OutOfMemoryError: PermGen space
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
... 19 more
Caused by: java.lang.OutOfMemoryError: PermGen space
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)

我的开发环境如下:JSF、PrimeFaces、Hibernate、JasperReports、Sybase。

你的 friend 建议我做什么来解决这个问题?

最佳答案

增加永久代空间可以解决这个问题。添加以下参数会将其增加到128m

-XX:MaxPermSize=128m

我不确定您是否可以在代码中做很多事情来减少正在消耗的永久代空间量,因此我认为任何解决方案都必须与更改 JVM 运行时参数有关。

你也可以考虑尝试

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

还有。

关于java - fillReport 函数期间 PermGen Space 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com