Support tip: Types of memory
When it comes to troubleshooting, it can help to know the basics of memory. The intention of this post is to provide a simple outline and something to keep in mind when you may open a case where Support asks questions you might not be familiar with.
To begin troubleshooting why the RTE has run out of memory, we first need to familiar with some frequently used terms about memory and how RTE utilizes these different memory types.
- Physical memory
Memory that physically exists, i.e. RAM.
- Swap space
Memory extended physically on the hard drive and managed by the operating system.
- Virtual memory
The total amount of memory available to a system
- Virtual address space
The amount and the layout of memory as an application can see it. Most modern operating systems that support virtual memory also run each process in its own dedicated address space. Each program thus appears to have sole access to the virtual memory
- 32-bit application
Such an application can only directly address up 4 GB of memory. On a 32-bit installation, by default, only 2 GB are made available to processes for their own use. The other 2GB are used by the operating system
- 64-bit application
Such an application can directly address up to 16 Exabytes (in theory, in reality, hardware limits addressable memory.)
On a 64-bit installation, RTE can utilize 3GB memory for its own use.
- Shared memory
Memory that can be shared between processes and threads on the same host
- Private memory
Memory that is only accessible to a single process, but to all threads within that process
- Free, Reserved, and Committed Virtual Memory
Every address in a process can be classified into 3 stages at any given time: free, reserved, or committed. A process begins with all addresses in a free stage, meaning they are free to be committed to memory or reserved for future use. Before any free address may be used, it must first be allocated as reserved or committed. Attempting to access an address that is either reserved or free generates an access violation exception.
- JVM heap (http://en.wikipedia.org/wiki/Java_virtual_machine)
The Java virtual machine heap is the area of memory used by the JVM, specifically HotSpot, for dynamic memory allocation. The heap is divided into generations:
- The young generation stores short-lived objects that are created and immediately garbage collected.
- Objects that persist longer are moved to the old generation (also called the tenured generation).
- The permanent generation (or permgen) is used for class definitions and associated metadata.
If you find that this or any post resolves your issue, please be sure to mark it as an accepted solution.”