Hacker News new | past | comments | ask | show | jobs | submit login
Reducing Java Memory Usage and GC with UseCompressedOops VM Option (leneghan.com)
27 points by javinpaul on March 16, 2012 | hide | past | favorite | 7 comments



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.


Thanks 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.


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.


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.


48GB??? How long are your old gen GC pauses?


It 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.


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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: