IBM Support

PM03448: HIGH MEMORY USE DURING APPLICATION DEPLOYMENT DUE TO LARGE EJB METADATA

Fixes are available

7.0.0.9: WebSphere Application Server V7.0 Fix Pack 9 for IBM i
7.0.0.9: WebSphere Application Server V7.0 Fix Pack 9 for Windows
7.0.0.9: WebSphere Application Server V7.0 Fix Pack 9 for AIX
7.0.0.9: WebSphere Application Server V7.0 Fix Pack 9 for HP-UX
7.0.0.9: Java SDK 1.6 SR7 Cumulative Fix for WebSphere Application Server
7.0.0.9: WebSphere Application Server V7.0 Fix Pack 9 for Solaris
7.0.0.9: WebSphere Application Server V7.0 Fix Pack 9 for Linux
7.0.0.11: WebSphere Application Server V7.0 Fix Pack 11 for IBM i
7.0.0.11: WebSphere Application Server V7.0 Fix Pack 11 for Windows
7.0.0.11: WebSphere Application Server V7.0 Fix Pack 11 for HP-UX
7.0.0.11: WebSphere Application Server V7.0 Fix Pack 11 for AIX
7.0.0.11: Java SDK 1.6 SR7 Cumulative Fix for WebSphere Application Server
7.0.0.11: WebSphere Application Server V7.0 Fix Pack 11 for Solaris
7.0.0.11: WebSphere Application Server V7.0 Fix Pack 11 for Linux
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for AIX
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for HP-UX
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for IBM i
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for Linux
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for Solaris
7.0.0.13: WebSphere Application Server V7.0 Fix Pack 13 for Windows
7.0.0.13: Java SDK 1.6 SR8FP1 Cumulative Fix for WebSphere Application Server
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for AIX
7.0.0.15: Java SDK 1.6 SR9 Cumulative Fix for WebSphere Application Server
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for HP-UX
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for IBM i
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for Linux
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for Solaris
7.0.0.15: WebSphere Application Server V7.0 Fix Pack 15 for Windows
7.0.0.17: WebSphere Application Server V7.0 Fix Pack 17
7.0.0.17: Java SDK 1.6 SR9 FP1 Cumulative Fix for WebSphere Application Server
7.0.0.19: WebSphere Application Server V7.0 Fix Pack 19
7.0.0.21: WebSphere Application Server V7.0 Fix Pack 21
7.0.0.23: WebSphere Application Server V7.0 Fix Pack 23
7.0.0.25: WebSphere Application Server V7.0 Fix Pack 25
8.5.0.1: WebSphere Application Server V8.5 Fix Pack 1
7.0.0.27: WebSphere Application Server V7.0 Fix Pack 27
8.5.0.2: WebSphere Application Server V8.5 Fix Pack 2
8.0.0.6: WebSphere Application Server V8.0 Fix Pack 6
7.0.0.29: WebSphere Application Server V7.0 Fix Pack 29
8.0.0.7: WebSphere Application Server V8.0 Fix Pack 7
8.0.0.8: WebSphere Application Server V8.0 Fix Pack 8
7.0.0.31: WebSphere Application Server V7.0 Fix Pack 31
7.0.0.27: Java SDK 1.6 SR13 FP2 Cumulative Fix for WebSphere Application Server
7.0.0.33: WebSphere Application Server V7.0 Fix Pack 33
8.0.0.9: WebSphere Application Server V8.0 Fix Pack 9
7.0.0.35: WebSphere Application Server V7.0 Fix Pack 35
8.0.0.10: WebSphere Application Server V8.0 Fix Pack 10
8.0.0.11: WebSphere Application Server V8.0 Fix Pack 11
8.0.0.12: WebSphere Application Server V8.0 Fix Pack 12
8.0.0.13: WebSphere Application Server V8.0 Fix Pack 13
8.0.0.14: WebSphere Application Server V8.0 Fix Pack 14
8.0.0.15: WebSphere Application Server V8.0 Fix Pack 15
7.0.0.19: Java SDK 1.6 SR9 FP2 Cumulative Fix for WebSphere Application Server
7.0.0.21: Java SDK 1.6 SR9 FP2 Cumulative Fix for WebSphere
7.0.0.23: Java SDK 1.6 SR10 FP1 Cumulative Fix for WebSphere
7.0.0.25: Java SDK 1.6 SR11 Cumulative Fix for WebSphere Application Server
7.0.0.27: Java SDK 1.6 SR12 Cumulative Fix for WebSphere Application Server
7.0.0.29: Java SDK 1.6 SR13 FP2 Cumulative Fix for WebSphere Application Server
7.0.0.45: Java SDK 1.6 SR16 FP60 Cumulative Fix for WebSphere Application Server
7.0.0.31: Java SDK 1.6 SR15 Cumulative Fix for WebSphere Application Server
7.0.0.35: Java SDK 1.6 SR16 FP1 Cumulative Fix for WebSphere Application Server
7.0.0.37: Java SDK 1.6 SR16 FP3 Cumulative Fix for WebSphere Application Server
7.0.0.39: Java SDK 1.6 SR16 FP7 Cumulative Fix for WebSphere Application Server
7.0.0.41: Java SDK 1.6 SR16 FP20 Cumulative Fix for WebSphere Application Server
7.0.0.43: Java SDK 1.6 SR16 FP41 Cumulative Fix for WebSphere Application Server

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When an application contains a large amount of EJB metadata,
    that is, when the EJB deployment descriptor (ejb-jar.xml)
    contains many EJB elements and EJB method elements, excess
    memory utilization occurs. This can lead to the process
    running out of memory, and causes an overall reduction in
    performance.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED:  All users of IBM WebSphere Application      *
    *                  Server V7.0                                 *
    ****************************************************************
    * PROBLEM DESCRIPTION: Excess memory utilization for           *
    *                      application deployements having large   *
    *                      amounts of EJB metadata.                *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    This update provides code changes which reduce the memory
    required for application deployment operations for applications
    which have a large amount of Enterprise Java Bean (EJB)
    metadata.  For such applications, application deployment can
    have exceptionally large memory utilization.  This slows the
    deployment process, and can lead to out-of-memory situations.
    
    In a sample field application, the application has a total file
    size of EJB deployment descriptors of approximately 22MB across
    42 modules, with the largest descriptor being about 2MB and
    (for that single module) representing 499 EJB classes, 6205
    method elements, and 2806 CMP attributes.  A deployment of the
    application is only possible with the Java Maximum Memory set
    to 4GB, and even when possible, the deployment takes an
    excessive amount of time (over 50 minutes).
    
    The results of this code update, for the sample application,
    were a reduction of the deployment time by approximately 50%
    (from about 41 minutes to about 22 minutes using local test
    resources), and a 12% improvement in maximum tenured and
    approximately a 25% improvement in average tenured usage.
    Similar results are expected for applications having very
    large amounts of EJB metadata.
    
    For this update, "Enterprise Java Bean (EJB) metadata)" is
    metadata read from EJBJar deployment descriptor files,
    "META-INF/ejb-jar.xml", as provided within EJBJar files.  Of
    interest is the overall count of elements in the EJBJar
    deployment descriptor.  Also of interest are elements for
    Enterprise Java Bean (EJB) classes, and elements for Enterprise
    Java Bean (EJB) methods.
    
    Memory utilization occurs in proportion to the overall count of
    elements, and occurs in proportion to the number of EJB class
    and EJB method elements, and in proportion to the amount of
    fan-out that occurs when processing classes associated with the
    EJB classes.  That is, superclasses, interfaces, parameter
    types, result types, and exception types of the EJB class and
    its methods.
    
    Excess memory use occurs in two areas:
    
    1) Deserialization of the EJB descriptor data uses a DOM XML
    parser to generate a tree of DOM nodes, which are then used to
    marshall the EJB descriptor as Eclipse Modeling Framework
    (EMF) objects.  The current implementation retains the
    intermediate DOM nodes.
    
    2) Processing of the EJB metadata causes the generation of
    Eclipse Modelling Framework (EMF) JavaClass and JavaMethod
    objects, using types provided by the Java Eclipse Model (JEM)
    framework.  Initially, a JavaClass or JavaMethod is implemented
    as a lightweight proxy object.  However, operations are
    available to access typing information for the class or
    method.  This causes the lightweight proxy to be converted to a
    populated object, with new objects created for the superclass
    of the class, for the interfaces of the class, for the methods
    of the class, and for the parameters, return type,
    and exceptions of the methods.
    
    2) (Continued) In the current implementation, the expansion of
    the JavaClass and JavaMethod objects does not ensure that
    references to the same class result in identical java
    objects.  This leads to a large amount of duplication of
    JavaClass and JavaMethod objects.
    
    3) In addition, the JavaClass and JavaMethod objects are used
    for a single stage of application deployment processing, and
    following that stage are no longer necessary.
    

Problem conclusion

  • Particular changes are made to avoid the overheads as listed
    above.  That is:
    
    1) Following the XML parse step for application metadata,
    including EJB metadata, to prune intermediate parse data.
    
    2) When expanding JavaClass and JavaMethod data, to share
    instances which are for the same java classes.
    
    3) Following the use of JavaClass and JavaMethod data, to return
    those JavaClass and JavaMethod objects to their lightweight,
    unexpanded state.
    
    The changes as provided by this update target key areas of code
    which is used to process application metadata.  For the current
    release, the changes are enabled through a system property.
    The default is for the changes to be disabled.
    
    System properties are handled as Java virtual machine custom
    properties in the IBM WebSphere Application Server Information
    Center for
    version 7.
    
    For instructions on setting Java virtual machine custom
    properties using the administrative console, see:
    
    http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp
    
    And, in particular, see:
    
    http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.
    ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/xrun_jvm.html
    
    The following java system properties are available to enable the
    code updates.  These java system properties default to false,
    which leaves the code updates disabled.  To enable the code
    updates, set both java system properties to true.  (For
    recommended usage, the java systems properties should be set
    in pairs: Either both should be set to false, or left unset,
    or both should be set to true.)
    
    The following java system property is used to enable the
    pruning of intermediate DOM nodes following the XML parse of
    application metadata:
    
    com.ibm.config.eclipse.wtp.enablexmltrim=true
    
    The following java system property is used to enable the
    sharing of JavaClass instances, and to enable the conversion of
    expanded JavaClass and JavaMethod objects to lightweight
    proxies following their use:
    
    com.ibm.config.eclipse.wtp.enablejemtrim=true
    
    New trace settings are available for use in relation to this
    update.  These settings should be used for problem diagnostics
    if a problem is encountered with this code update enabled:
    
    The following trace specification is used to generate
    trace from code areas
    which are enabled by the java system property,
    "com.ibm.config.eclipse.wtp.enablexmltrim":
    
    com.ibm.config.eclipse.wtp.xmltrim=finer
    
    The following trace specification is used to generate
    trace from areas which are enabled by the java system property,
    "com.ibm.config.eclipse.wtp.enablejemtrim":
    
    com.ibm.config.eclipse.wtp.jem=finer
    
    The fix for this APAR is currently targeted for inclusion in
    fix pack 7.0.0.9.  Please refer to the Recommended Updates
    page for delivery information:
    http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980
    

Temporary fix

Comments

APAR Information

  • APAR number

    PM03448

  • Reported component name

    WEBSPHERE APP S

  • Reported component ID

    5724J0800

  • Reported release

    61A

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2009-12-14

  • Closed date

    2010-02-22

  • Last modified date

    2010-02-22

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    WEBSPHERE APP S

  • Fixed component ID

    5724J0800

Applicable component levels

  • R700 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSEQTP","label":"WebSphere Application Server"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"6.1","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
24 October 2021