Introduction
This document describes the problem where the Voice XML (VXML) server runs out of memory and reports:
java.lang.OutOfMemoryError: PermGen space
Problem
In some cases, the VXML Server/Tomcat crashes and displays an OutOfMemoryError message.
These snippets are seen in the VXML server application error logs.
Exception in thread "Message Buffering Thread Error with admin
application update,xx/xx/2013 xx:xx:xx.xxx, The error was:
There was a problem loading classes local to the application
<application Name>. The root cause was:
java.lang.OutOfMemoryError: PermGen space
com.audium.server.AudiumException: There was a problem loading
classes local to the application <applicationname>
.at com.audium.server.controller.AudiumServerConfiguration.
loadLocalClasses (AudiumServerConfiguration.java:1405)
at com.audium.server.controller.AudiumServerConfiguration.
<init>(AudiumServerConfiguration.java:212)
Caused by: java.lang.OutOfMemoryError: PermGen space
Solution
When you run Customer Voice Portal (CVP) and come across an OutOfMemoryError message, refer to these steps for the workaround.
Increase Virtual Memory
In many cases, an increase of the virtual memory helps. In order to increase the virtual memory in CVP Versions 8.5 and 9.0, complete these steps:
Windows 2003
- Navigate to:
Start > Run > Regedit
HKLM\SOFTWARE\Apache Software Foundation\Procrun2.0\VXMLServer\
Parameters\Java\Options
- Add the "-XX:MaxPermSize=256M" registry key in order to increase the Virtual Memory PermSpace.
Windows 2008
- Navigate to:
Start > Run > Regedit
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun2.0\VXMLServer\
Parameters\Java\Options
- Add the "-XX:MaxPermSize=256M" registry key in order to increase the Virtual Memory PermSpace.
Refer to the Multiple Vulnerabilities in Cisco Unified Customer Voice Portal Software Security Advisory for more information.
Contact Developer Services
Beyond these fixes, VXML application debugs should be handled by the VXML application developer because the Cisco Technical Assistance Center has limited resources to analyze the application flow involved. If you have followed the procedure in this document and the source of excessive memory usage cannot be found, contact developer services in order to review the application.
Frequently Asked Questions
What is the best way to monitor VXML application memory consumption?
There are several tools available for this, such as VisualVM, JProfiler, and Yourkit. Any of the profilers that assess VXML applications provide details into which data structures accumulate and do not release memory, which eventually leads to an OutOfMemory condition.
How often is garbage collection kicked off on a (CVP)/VXML server?
When garbage collection runs depends on the system load. A general rule is that a high-load system or a system with a small amount of memory encounters garbage collection often whereas a low-volume system or one with a large amount of memory runs garbage collection less frequently.
How does garbage collection decide what memory to reclaim from the applications?
This is assessed by the Java Virtual Machine (JVM). Any object becomes a candidate for garbage collection once all references to it are discarded.