How to interpret Java memory usage logged in the iXp log?

book

Article ID: 196680

calendar_today

Updated On:

Products

CA Workload Automation iXP

Issue/Introduction

The following Java memory usage printed in the ixpDaemon.log periodically. This document explains how to interpret the free/total values. 

$ grep -i memory /opt/CA/iXp/log/ixpDaemon.log | tail -5
06-15 18:55:57:     main:free/total memory: 2358744k/6191616k*
06-15 18:56:22:     main:free/total memory: 3946605k/6185984k
06-15 18:56:47:     main:free/total memory: 3815546k/6108160k
06-15 18:57:11:     main:free/total memory: 3834018k/6171648k
06-15 18:57:36:     main:free/total memory: 3471732k/6028800k

Where is this ~3GB/6GB memory coming from? We have assigned a max heap space of 8GB to the iXp tomcat.


tomcat   31800     1 67 Jun07 ?        5-07:45:47 /usr/lib/jvm/jre-1.8.0/bin/java -Dixp.home=/opt/CA/iXp -Dixp.job_name_prefix_length=17 -Xms1500m -Xmx8000m -Djavax.sql.DataSource.Factory=org.apache.commons.dbcp.BasicDataSourceFactory -Djavax.net.ssl.keyStore=/opt/CA/iXp/contrib/manage.batch.cba.kdb -Djavax.net.ssl.keyStorePassword=changeit -Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.trustStore=/opt/CA/iXp/contrib/manage.batch.cba.kdb -Djavax.net.ssl.trustStoreType=PKCS12 -Djavax.net.ssl.trustStorePassword=changeit -classpath :/usr/share/tomcat6/bin/bootstrap.jar:/usr/share/tomcat6/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat6 -Dcatalina.home=/usr/share/tomcat6 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat6/temp -Djava.util.logging.config.file=/usr/share/tomcat6/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start

 

Environment

Release : 11.3

Component : CA WORKLOAD AUTOMATION AE IXP

Resolution

The CA Workload Automation iXp logs the memory utilization by interfacing with the environment through java class "runtime". 

The free memory is captured through "getRuntime().freeMemory()" whereas the total memory by "getRuntime().totalMemory()"

freeMemory():  

Returns the amount of free memory in the Java Virtual Machine. Calling the gc method may result in increasing the value returned by freeMemory.

Returns:
 Tn approximation to the total amount of memory currently available for future allocated objects, measured in bytes.

totalMemory():

Returns the total amount of memory in the Java virtual machine. The value returned by this method may vary over time, depending on the host environment. Note that the amount of memory required to hold an object of any given type may be implementation-dependent.

Returns:
 The total amount of memory currently available for current and future objects, measured in bytes.

Note: The value returned by the totalMemory() is different from the maxMemory() that we set for iXp application (-Xmx). It is not returned by the log periodically.

Additional Information

For more information see Class Runtime:

https://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html