5 ms·
Reducing Java Memory Usage and GC with UseCompressedOops VM Option
- CJefferson 15y agoThis 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.
- leneghan 15y agoThanks for the feedback, I have now added a bit more information to the background section as well as a link to a full writeup of how it is done.
- JohnLavoie 15y agoWe 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.
- jbooth 15y ago48GB??? How long are your old gen GC pauses?
- mrfu 15y agoIt is not clear whether it reduces the heap size, or the overall footprint of the java process. By 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.
- jbooth 15y agoHeap 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.
- Tuna-Fish 15y agoAn 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.