The PingFederate installer for Windows runs the memoryoptions utility in an attempt to optimize the Java virtual machine (JVM) heap. Regardless of available memory, PingFederate uses the Garbage-First (G1) garbage collector (GC). The script assumes that PingFederate will be the only service on the server and consume a majority of the memory.

The G1GC is designed to achieve high throughput while meeting its pause times goal for garbage collection, and the collector self-tunes by adjusting the size and nature of the various heap regions to meet the pause time goal. As needed, administrators can rerun the utility or manually edit these options at a later time.

When the PingFederate installer is executed for Windows or a subsequent rerun of the memoryoptions utility, it creates a backup copy of the current jvm-memory.options and records the G1GC options in the jvm-memory.options file. Changes made as a result of the execution of the utility or a manual edit are activated after a restart of PingFederate.

Important:

You should not use the memoryoptions script when you deploy PingFederate inside of a container. Instead, you should edit the jvm-memory.options file directly. In containers, you should use the InitialRAMPercentage and MaxRAMPercentage JVM options to control the size of the heap.

See the following table for information regarding expected behaviors.

PingFederate installation mediums and their expected behaviors from the execution of the memoryoptions utility tool
Installation medium Expected behavior
PingFederate installer for Windows
  • The installer creates a new PingFederate installation.
  • The installer runs the memoryoptions utility. Regardless of available memory, PingFederate uses the G1GC as a default. The script assumes that PingFederate will be the only service on the server and consume a majority of the memory.
  • The installer configures PingFederate to run as a service.
  • The memoryoptions options are activated as the PingFederate service starts.
PingFederate product distribution ZIP file The default jvm-memory.options file becomes part of the new installation as program and default configuration files are extracted from the PingFederate product distribution .zip file.
PingFederate as a console application on Windows or as a console application or a service on Linux
  • The JVM options set in the default jvm-memory.options file are activated as PingFederate starts.
  • The default JVM options are conservative. For most deployment scenarios using various physical or virtual resources, run the memoryoptions utility. Regardless of available memory, PingFederate uses the G1GC. The script assumes that PingFederate will be the only service on the server and consume a majority of the memory.
  • As a result of the execution of the memoryoptions utility or a manual edit of the jvm-memory.options file, the JVM options are activated as PingFederate restarts.
PingFederate as a service on Windows
  • When administrators run the PingFederate service-installation program install-service.bat, located in the <pf_install>/pingfederate/sbin/win-x86-64 directory, to install the PingFederate Windows service manually, the program runs the memoryoptions utility. Regardless of available memory, PingFederate uses the G1GC. The script assumes that PingFederate will be the only service on the server and consume a majority of the memory.

    The service-installation program then runs a helper utility generate-wrapper-jvm-options.bat, located in the <pf_install>/pingfederate/sbin/wrapper directory, to read the JVM options from the jvm-memory.options file and create a resource file that the PingFederate Windows service requires to configure its JVM options.

  • The default JVM options are activated as the PingFederate service starts.