HP-UX Programmer's Guide for Java 2

Table Of Contents
9 Expanding Memory
Determine your requirements
It is important to understand the real requirements of your application. We recommend
that you perform sizing tests before deployment with a realistic load, while monitoring
with -Xverbosegc and a tool like GlancePlus. Learn more about GlancePlus and the
-Xverbosegc option.
Our Java™ Performance Tuning website has much valuable information on profiling
and performance tools.
In addition, HP-UX patches may be needed for expanding memory size. Read the
release notes for your SDK release to determine if you need a HP-UX patch.
Memory layout under HP-UX 11.0 (PA-RISC only)
In the HP-UX 32-bit process memory layout, there are four "spaces" used in the runtime:
---------- 0x00000000
| text |
---------- 0x40000000
| data |
---------- 0x80000000
| sh mem |
---------- 0xc0000000
| sh mem |
--------- 0xffffffff
Application "text," the code in the executable, goes in text space.
Shared libraries get mapped into the shared memory, usually above 0xc0000000 but
if there are many shared libraries or a lot of shared memory in use they will creep down
into the 0x80000000-0xbfffffff range.
So in a normal executable, writable data is in the range 0x40000000 to 0x7fffffff.
C heap starts in the 0x4-------'s, and mmap-ed areas start in the 0x7's and work
back down. Thread stacks also start in the 0x7's, and get allocated at lower and lower
addresses as more threads get allocated.
Almost all of the native code for the JDK is in shared libraries. There is just a very small
amount of code in the launcher down in text space. We take advantage of otherwise
unused space in text space by linking with EXEC_MAGIC. With EXEC_MAGIC, on HP-UX
11.0, our memory layout looks like this.
---------- 0x00000000
| text |
---------- the java launcher uses memory up to about 0x00008000;
it is writeable under EXEC_MAGIC.
| data |
---------- 0x80000000
| sh mem |
---------- 0xc0000000
| sh mem |
---------- 0xffffffff
Determine your requirements 63