JVM Optimizations and Settings

Additional options within the [Java-n] section of the Agentry.ini file are provided to allow the implementors, administrators, and developers of an application control over the behavior of the JVM run by the Agentry Server. These settings can be modified using the SAP Control Center. Before modifying these items be sure to review both the following descriptions, and also any information provided with the Java components installed to the Agentry Server’s host system.

Following is a list of these settings and descriptions of their purpose and areas of behavior affected:
  • printStackTrace - This option may be set to true or false. By default, any exceptions thrown by the Java logic are logged to the events.log file for the Agentry Server. Setting this option to true will also include the stack trace for that exception in this same log file.
  • printBusinessLogicStackTrace - This option may be set to true or false. A special exception class, JavaBusinessLogicError, is provided with the Agentry Java API. Developers may write logic to throw this exception in certain circumstances. The printBusinessLogicStackTrace allows for the stack trace of this exception to be displayed on the transmit dialog of the Agentry Client. This functionality is provided primarily for development testing and debugging, and should only be set to true for these purposes.
  • initialHeapSize -. This configuration setting provides the same behavior as the -Xms JVM parameter. If this parameter is specified in the nonStandardJavaOptions, the initialHeapSize setting should be omitted from the [Java-n] section. This option is set to a numeric value and represents the initial amount of memory in megabytes to be allocated by the JVM for the initial heap. If not specified the default value is 2MB. This should be set based entirely on the needs of the application. Also, restrictions related to the amount of memory that may be specified may differ from one version of Java to the next, and these restrictions should be reviewed prior to setting this option.
  • maxHeapSize - This configuration setting provides the same behavior as the -Xmx JVM parameter. If this parameter is specified in the nonStandardJavaOptions, the maxHeapSize setting should be omitted from the [Java-n] section. This option is set to a numeric value and represents the maximum amount of memory to be allocated by the JVM, in megabytes, for the heap. The default value is 64MB if not specified. This should be set based entirely on the needs of the application. If heap memory exceeds this limit, an error will be encountered on the Agentry Server. Also, restrictions related to the amount of memory that may be specified may differ from one version of Java to the next, and these restrictions should be reviewed prior to setting this option.
  • reduceOSSignalUse - This option may be set to true or false. When true, and only when the Agentry Server is running as a Windows Service, the JVM will remain running after the Agentry Server service is stopped. When the service is restarted, it will not start a new instance of the JVM, but use the one currently running. True is the recommended setting for this option whenever the Server is run as a Windows Service.
  • nonStandardJavaOptions - This configuration option contains text representing the JVM parameters (command line options) sent to the JVM when started by the Agentry Server. The options here may be any supported by the version of the JVM in use. Examples may include options related to garbage collection or debugging options.
  • lowMemoryPercentage - This option specifies a percentage of the maximum heap size. When the available heap memory allocated by the JVM falls below this percentage, a warning message is printed to the events.log for the Agentry Server. The default value for this option is 5 percent of memory.
  • performCompile - This option may be set to true or false and specifies whether the Steplet, ComplexTable, and DataTable Java classes of an application should be compiled every time they are loaded at run time. This option is likely to be set to false in all production environments, as changes to these classes occur infrequently. It may be true or false in the development environment, depending on the nature of changes performed. Much of the Java logic implemented for an application is not contained within the Steplet, ComplexTable, or DataTable classes and changes made may not directly impact these class implementations within the application. Therefore, compiling these classes during every transmit is not always necessary. In such situations this option may be set to false to prevent this unnecessary processing and improve efficiency.