2012-03-19 10 views
0

私は、次のコードブロック内PermGenスペースエラー

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

を実行するには、次のPermGenスペースエラーを取得しています:

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、J asperReports、Sybase

あなたは問題を解決するために私に何を提案しますか?

+0

私がこれを読んだのは、Webコンテナの問題です。アプリケーションを少し配備した後でコンテナを再起動する必要があります。 – Damian

+0

Damian様、ウェブコンテナの問題について私の文章を許してください。どうすれば再起動できますか?私は途中でTomcatを使用しています。 –

+0

あなたはWebコンテナと同じようにサーバーを意味します。 –

答えて

1

perm genスペースを増やすと、この問題は解決します。次のパラメータを追加すると、私はあなたが消費されているパーマ世代のスペースの量を減らすために、あなたのコード内の多くを行うことができますかわからない128メートル

-XX:MaxPermSize=128m 

にそれを増やすので、私はすべてのソリューションをしなければならないだろうと思いますJVMランタイム・パラメーターを変更することで行います。

また、同様

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled 

をしようと考えることができます。

+0

Dave様、私はその設定方法を知らず、ネット上に何も見つかりませんでした。あなたはその設定で私を助けてくれますか?おかげで –

+0

DaveHowesさん、netbeansでJVMを設定するための設定を見つけて、2つのソリューションを試しました。しかし、それらは機能しませんでした。他に提案はありますか? –

+0

Netbeansが実行するJVMではなく、Tomcatが実行するJVMにこれらのパラメータを追加する必要があります(恐れているNetbeansについてよく知っています) – DaveH

関連する問題