JDK-6320642 : JVM consuming 99% CPU in java.lang.ClassLoader.defineClass1
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 5.0u4
  • Priority: P2
  • Status: Closed
  • Resolution: Won't Fix
  • OS: solaris_10
  • CPU: sparc
  • Submitted: 2005-09-07
  • Updated: 2014-02-27
  • Resolved: 2005-12-15
Related Reports
Relates :  
Relates :  
Description
SAP Build System runs for some minutes get stucks the following stage:

    [ddgen] [Info]    Initialize generation templates from configuration jar:file:/export/home/sap/japro/wd_dev_shared/wd.generation/dev/gen/dbg/java/packaged/full/_webdynpro_generation_facade/dictionary_generation_core_api.jar!/DictionaryGenerationConfigurationCompiled.xml

The CPU consumption goes up to 99% and the threaddump is this:

Full thread dump Java HotSpot(TM) Client VM (1.5.0_04-b05 mixed mode, sharing):

"Low Memory Detector" daemon prio=10 tid=0x000e7620 nid=0x7 runnable [0x00000000..0x00000000]

"CompilerThread0" daemon prio=10 tid=0x000e5ed0 nid=0x6 waiting on condition [0x00000000..0xfba7e490]

"Signal Dispatcher" daemon prio=10 tid=0x000e5140 nid=0x5 waiting on condition [0x00000000..0x00000000]

"Finalizer" daemon prio=10 tid=0x000dbc68 nid=0x4 in Object.wait() [0xf7bff000..0xf7bffac8]
        at java.lang.Object.wait(Native Method)
        - waiting on <0xcd365ec0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
        - locked <0xcd365ec0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x000db058 nid=0x3 in Object.wait() [0xf87ff000..0xf87ff948]
        at java.lang.Object.wait(Native Method)
        - waiting on <0xcd365f40> (a java.lang.ref.Reference$Lock)
        at java.lang.Object.wait(Object.java:474)
        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
        - locked <0xcd365f40> (a java.lang.ref.Reference$Lock)

"main" prio=10 tid=0x000372c0 nid=0x1 waiting on condition [0xffbfb000..0xffbff028]
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.tools.ant.AntClassLoader.defineClassFromData(AntClassLoader.java:1042)
        at org.apache.tools.ant.AntClassLoader.getClassFromStream(AntClassLoader.java:1090)
        at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1154)
        at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1107)
        at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:983)
        - locked <0xcdd66f48> (a org.apache.tools.ant.AntClassLoader)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        - locked <0xcdd66f48> (a org.apache.tools.ant.AntClassLoader)
        at com.sap.engine.lib.xsl.xslt.output.Encoder.<init>(Encoder.java:42)
        at com.sap.engine.lib.xsl.xslt.output.DocHandlerSerializer.<init>(DocHandlerSerializer.java:39)
        at com.sap.engine.lib.xml.util.DOMSerializer.<init>(DOMSerializer.java:25)
        at com.sap.engine.lib.xml.dom.Base.<clinit>(Base.java:19)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at com.sap.engine.lib.xml.parser.DOMParser.<init>(DOMParser.java:38)
        at com.sap.engine.lib.xml.parser.DOMParserExt.<init>(DOMParserExt.java:15)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
        at java.lang.Class.newInstance0(Class.java:350)
        at java.lang.Class.newInstance(Class.java:303)
        at com.tssap.util.xml.DOMAccessInQMy.parse(DOMAccessInQMy.java:112)
        at com.sap.ide.generationfwk.configuration.GenerationConfigurationBase.parseConfigurationFile(GenerationConfigurationBase.java:79)
        at com.sap.ide.generationfwk.configuration.GenerationConfiguration.refresh(GenerationConfiguration.java:49)
        at com.sap.ide.generationfwk.GenerationBase.refreshConfiguration(GenerationBase.java:91)
        at com.sap.dictionary.tools.generation.console.GenerationConsole.generate(GenerationConsole.java:146)
        at com.sap.dictionary.generation.ant.GenerationAnt.main(GenerationAnt.java:47)
        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:585)
        at com.sap.tools.ant.taskdefs.DDGenAntTask.execute(DDGenAntTask.java:220)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:341)
        at org.apache.tools.ant.Target.performTasks(Target.java:369)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
        at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:37)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:341)
        at org.apache.tools.ant.Target.performTasks(Target.java:369)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
        at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:37)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
        at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
        at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:107)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
        at org.apache.tools.ant.Task.perform(Task.java:364)
        at org.apache.tools.ant.Target.execute(Target.java:341)
        at org.apache.tools.ant.Target.performTasks(Target.java:369)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
        at org.apache.tools.ant.Main.runBuild(Main.java:668)
        at org.apache.tools.ant.Main.startAnt(Main.java:187)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)

"VM Thread" prio=10 tid=0x000d8880 nid=0x2 runnable

"VM Periodic Task Thread" prio=10 tid=0x000e87d0 nid=0x8 waiting on condition

Comments
WORK AROUND Increasing the PermSize to 128m (-XX:PermSize=128m) seems to solve this one. there's alot of reflective data being used in this build and could explain why an increase in this heap size is needed. output from build : post_build: [echo] target plain_build done BUILD SUCCESSFUL Total time: 5 minutes 16 seconds
07-09-2005