Bug ID 1153865: Restjavad OutOfMemoryError errors and restarts after upgrade

Last Modified: Mar 26, 2023

Bug Tracker

Affected Product:  See more info
BIG-IP Install/Upgrade, TMOS(all modules)

Known Affected Versions:,,, 15.1.8, 15.1.7,,

Fixed In:

Opened: Sep 12, 2022
Severity: 3-Major


After upgrade to an affected version, restjavad restarts intermittently or frequently, and/or may use high CPU. The restjavad logs, /var/log/restjavad.X.log, may report the following errors: java.lang.OutOfMemoryError: Java heap space restjavad may instead, or as well, run many full garbage collection cycles one after another, causing high CPU. This will be shown by frequent logs with [FullGC] in /var/log/restjavad-gc.log.X.current


May have problems in TMUI with certain pages or tabs, such as network map with very config or SSLO or iLX related tabs. Other services that use REST API, internal and external to BIG-IP, may be impacted with low performance or service instability


- Update to affected version:, 15.1.7-,, or later versions. - Value of sys db restjavad.useextramb is true. - Value of sys db provision.restjavad.extramb is 192 or lower than previous restjavad heap size. - Use of REST API calls that need a lot of memory. Heavy users of REST API may be very affected such as SSLO.


Before upgrade - if you set sys db restjavad.useextramb to value false before install of new version you will have more restjavad memory, the default 384MB, after upgrade. tmsh modify sys db restjavad.useextramb value false If you restart restjavad you can see if that value works before upgrade. If you don't restart then it will come into effect after reboot. If that no longer has issues after update then leave that setting at false. Otherwise set back to true (no restart) and increase provision.restjavad.extramb as in After upgrade section below. After upgrade: Set sys db provision.restjavad.extramb to an appropriate value and restart restjavad. Run the following command: tmsh modify sys db provision.restjavad.extramb value X bigstart restart restjavad Iterate as necessary. The value of X is derived by using one of the following formulae: - When updating from versions before 14.1.4 and 15.1.3, to affected versions, a value that preserves the maximum previous restjavad heap size is: 192MB + 80% of MIN(provision.extramb|2500) the minimum possible heap size was: 192MB + 20% of MIN(provision.extramb|2500) The actual restjavad heap size would be between those extremes. SSLO systems would typically need the maximum. - When updating from 14.1.4-14.1.5, from 15.1.3- or from 16.0.x to affected versions: 384MB + 80% of MIN(provision.extramb|2500) - When updating from 16.1.0-16.1.3 or from to affected versions: 384MB + 90% of MIN(provision.extramb|4000)

Fix Information

After upgrade, the system now sets the default value for provision.restjavad.extramb variable to 384MB. This sets the maximum heap size to 384MB. For values of provision.restjavad.extramb of 384 and lower the starting heap size is set at 96MB. For values above 384MB the starting heap size is set to the same value as maximum heap size. Where sys db restjavad.useextramb was set to value true in the previously used version, the value for provision.restjavad.extramb is based on a calculation of the maximum restjavad heap size that could have been used. Usually this maintains the same or very similar restjavad heap size as used previously with more ability to fine tune it. The default size works in a wider range of settings. When upgrading from a version that had a smaller starting heap size than maximum heap size, so before 14.1.4 or 15.1.3, and restjavad.useextramb set to true, it's possible that restjavad will use more memory than required. That's because for values above the default size of 384MB for provision.restjavad.extramb starting heap size is set the same as maximum heap size to lower performance issues when large memory sizes are required. You can lower restjavad memory use by lowering the value of provision.restjavad.extramb and restarting it if needed.

Behavior Change