Select to view content in your preferred language

Understanding Java heap behavior

92
0
yesterday
TimoT
by
Frequent Contributor

I’m trying to better understand how the Java heap behaves in ArcGIS Enterprise. I don’t have any background in Java memory management beyond some recent research, so I’d appreciate clarification to make sure I’m interpreting this correctly.

From what I’ve gathered, Java in ArcGIS Enterprise is configured to allow the heap to grow up to the configured -Xmx value (typically 80% of available physical memory). However, it appears that once the heap expands, the Garbage Collector does not shrink the heap, even if memory within the heap is freed.

If this understanding is correct, then:

  • The javaw.exe process may continue to show a large amount of committed memory, even when much of that heap space is no longer actively in use.
  • As a result, overall memory utilization on the machine can appear high, driven primarily by Java’s committed memory, even though this does not necessarily reflect memory pressure or exhaustion within ArcGIS Server itself.
  • This makes me question the effectiveness of monitoring physical memory usage alone in ArcGIS Enterprise, as there would be cases where the Java heap is exhausted, causing a component to become unresponsive or crash, while system memory utilization never reaches 100%.

I'm considering submitting an ArcGIS Idea to request that ArcGIS Monitor expose Java heap related metrics, but I just wanted to confirm my understanding first. Ideally, I’d prefer not to rely on third-party Java heap monitoring tools, though I’d be interested to hear if others are using any specific tools or approaches.

0 Replies