Article - CS275805

Windchill PDMLink Background MethodServer JVM enters full Garbage Collection (GC) and exits every time a particularly large Interference Detection (CLASH) Job is processed

Modified: 19-Dec-2017   


Applies To

  • Windchill PDMLink 10.0 to 11.1
  • Creo View Adapters 1.0 to 4.2
  • Windchill Visualization Services (WVS)
  • Windchill Interference Management Services (Batch Interference Detection)
  • Interference Engine (PVSCLASH)

Description

    • Attempting to process a very large Interference Detection Query will cause the Background MethodServer processing the CLASH queues to exit due to its Java Virtual Machine (JVM) running out of heap memory
    • The JVM will initially start to output warnings indicating that it is entering the low memory state:
    WARN  [Service Thread] wt.method.MemoryUsageRedirectStrategy  - Entering low memory state
    . . .
    WARN  [Service Thread] wt.jmx.notif.memory  - Time=2017-11-10 15:15:46.401 +0100, Name=MemoryNotifier, SourceObjectName=com.ptc:wt.subsystem=Monitors,wt.monitorType=Memory, class=class javax.management.Notification, type=java.management.memory.collection.threshold.exceeded, userData=[count=17,poolName=PS Old Gen,usage=[committed=4294967296,init=4294967296,max=4294967296,used=4294493016]], message=Memory usage exceeds collection usage threshold, JVM Name=18108@<id>, Threshold 
    . . .
    • Before it ultimately exits, the JVM will enter Full Garbage Collection (GC) and start to output periodic stack traces
    • These stack traces show the Clash Queue Polling Thread stack gradually consuming all available memory (Bytes allocated):
    "PublisherQueueCLASH1.PollingThread" Id=135 prio=5 RUNNABLE
          Blocked (cnt): 49; Waited (cnt): 54
          CPU nanos: 46437732600; User nanos: 40670734600; Bytes allocated: 5253773176
          Method context: 2z5syc;j9ttcvhq;18108;wm0cs4;3589; DB session: 1308
      at java.io.FileInputStream.readBytes(Native Method)
      at java.io.FileInputStream.read(FileInputStream.java:272)
      at org.apache.xerces.impl.XMLEntityManager$RewindableInputStream.read(Unknown Source)
      at org.apache.xerces.impl.io.UTF8Reader.read(Unknown Source)
      at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
      at org.apache.xerces.impl.XMLEntityScanner.scanContent(Unknown Source)
      at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanContent(Unknown Source)
      at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
      at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
      at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
      at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
      at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
      at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
      at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
      at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
      at wt.util.xml.NonValidatingXML4jAdapter.createDOMDocument(NonValidatingXML4jAdapter.java:147)
      at com.ptc.wvs.common.util.SimpleXml.getDocument(SimpleXml.java:210)
      at com.ptc.wvs.common.util.SimpleXml.getDocument(SimpleXml.java:188)
      at com.ptc.wvs.server.publish.InterferenceDetectionHelper.processInterferenceReport(InterferenceDetectionHelper.java:483)
      at com.ptc.wvs.server.publish.CadConvertCLASH.storeComponentRepresentation(CadConvertCLASH.java:360)
      at com.ptc.wvs.server.publish.ClashJob.executeClashJob(ClashJob.java:310)
      at com.ptc.wvs.server.publish.ClashJob.processJob(ClashJob.java:125)
      at com.ptc.wvs.server.publish.WVSProcessingJob.doMyJob(WVSProcessingJob.java:549)
      at com.ptc.wvs.server.publish.WVSProcessingJob.doJobInternal(WVSProcessingJob.java:510)
      at com.ptc.wvs.server.publish.WVSProcessingJob.doJob(WVSProcessingJob.java:480)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at wt.queue.QueueEntry.execute(QueueEntry.java:224)
      at wt.queue.ProcessingQueue.execEntry(ProcessingQueue.java:285)
      at wt.queue.ProcessingQueue.execEntries(ProcessingQueue.java:901)
      at wt.queue.PollingQueueThread.run(PollingQueueThread.java:99)
    • The JVM will ultimately and abruptly exit without further messages
    • WVS BGM crashes with full GC each time we submit a Interference Detection job for a large assembly
    This is a printer-friendly version of Article 275805 and may be out of date. For the latest version click CS275805