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.