Hello,

In my application Java, I have a tool of migration which allows me to push 
towards CouchDB (No-SQL DB) in JSON (Jackon), XML(JAXB), and PDF format 
corresponding to these folders (POJOs/Object Java).

In the 500th iteration (approximately) the memory PermGen is saturated, and 
the JVM is blocked(surrounded). It is necessarily necessary to restart the 
JBoss server ...
We analyzed the evolution of the memory with JConsole (of the jdk) and also 
JProfiler 8 => leak og PermGen memory ...
It would seem that JOpenDocument is not adapted in batch processing.

Here is a result of our UnitTest :

*The unit test :*

@Test
    public void testDeCharge() throws DouaneException, JDOMException, 
TemplateException, IOException {
        DossierTestBuilder builder = new DossierTestBuilder();
        
        List<Dossier> dossiers = new ArrayList<Dossier>();
        
        dossiers.add(builder.getDossierComplet(TypeDossier.EXANTE));
        dossiers.add(builder.getDossierComplet(TypeDossier.EXPOST1));
        dossiers.add(builder.getDossierComplet(TypeDossier.EXPOST2_AUTRE));
        
dossiers.add(builder.getDossierComplet(TypeDossier.EXPOST2_FINANCE));
        dossiers.add(builder.getDossierComplet(TypeDossier.TSVR));
        
        int j = 0;
        for(int i = 0; i < 1000; i++) {
            for(Dossier dossier : dossiers) {
                DossierEdition.getDossierEdition(dossier).editer(dossier);
                j++;
                log.info("Dossier " + j + " OK...");
            }
        }
    }

*The console output : *

java.lang.OutOfMemoryError: PermGen space 
    at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
 

    at 
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
 

    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518) 
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:865) 
    at org.jopendocument.dom.ODPackage$1.processEntry(Unknown Source) 
    at org.jopendocument.util.ZippedFilesProcessor.process(Unknown Source) 
    at org.jopendocument.dom.ODPackage.<init>(Unknown Source) 
    at org.jopendocument.dom.template.Template.<init>(Unknown Source) 
    at org.jopendocument.dom.template.RhinoStreamTemplate.<init>(Unknown 
Source) 
    at 
fr.gouv.finances.douane.banaco.edition.dossier.DossierExAnteEdition.getSelectedTemplate(DossierExAnteEdition.java:45)
 

    at 
fr.gouv.finances.douane.banaco.edition.dossier.DossierEdition.editer(DossierEdition.java:214)
 

    at 
fr.gouv.finances.douane.banaco.edition.dossier.DossierTest.testDeCharge(DossierTest.java:124)
 

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 


    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 

    at java.lang.reflect.Method.invoke(Method.java:597) 
    at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
 

    at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
 

    at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
 

    at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
 

    at 
org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
 

    at 
org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
 

    at 
org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
 

    at 
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
 

    at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
 

    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
    at 
org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
 

    at 
org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
 

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) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    at 
org.junit.runner.notification.RunNotifier.fireTestRunFinished(RunNotifier.java:68)
 

    at 
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:51)
 

    at 
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 

    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
 

    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 

    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
 

    at 
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
 


Heve you an idea ?

Regards,
Florent


Le jeudi 8 août 2013 19:39:42 UTC+2, [email protected] a écrit :
>
> Hi,
>
> what do you mean by "each loop"?
>
> Regards,
> Guillaume
>
>
>
> 2013/8/8 FL <[email protected] <javascript:>>
>
>> Hi,
>>
>> I have a problem with the JVM Perm Gen memory. 
>> Server JBoss started with XX:MaxPermSize=256m but it's never enough ...
>> Each loop adds(consumes) approximatively 1 Mo in the PermGen (from my 
>> batch tool). 
>> When PermGen is full, the JVM fail.
>>
>> The cause is these instructions : 
>>
>> *rhinoTemplate.saveAs(odtFile);*
>>         
>>  or
>> *
>> ODSingleXMLDocument odSingleXMLDocument = 
>> selectedTemplate.createDocument();
>> odSingleXMLDocument.saveToPackageAs(odtFile);*
>>
>> Sorry for my bad english.
>> Have you any idea for this big problem ?
>>  
>> -- 
>>  
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "jOpenDocument" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>  
>>  
>>
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"jOpenDocument" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to