This article fails to say what this flag actually does. My understanding is that it makes 64 bit java use 32 bit pointers. Using the fact that all java memory is 8 byte aligned, a 32 bit pointer gets you a 32gb memory space.
We love this setting. It gives us a really nice performance boost on big heaps. Obviously, it can only be enabled on heap sizes below 32GB. We have found that with this setting enabled on a 32GB heap, we need to go up to 48GB+ in order to achieve the same performance.
Heap size should be roughly equivalent to the overall footprint unless you're allocating a lot of native memory or mmapped files from the java process. If you are, well, that's your answer.
An interesting tidbit to those who do not know:
x86 allows for all memory accesses to use an addressing mode of base+{1,2,4,8}*index. This allows this particular optimization to be used with no performance cost for many normal accesses.
7 comments
[ 18.8 ms ] story [ 88.8 ms ] threadBy the way, if anyone knows of a method to reduce the RSS size of the java process, I'd be more than grateful to hear about it.