The basics of JVM tuning for memory management
The first rule of JVM tuning for performance improvement is probably that it should be the last option for improvement. Look at this code snippet:
int i = 0;
List<Integer> list = new ArrayList<>();
while(i < 100) {
list.add((int)Math.ceil(Math.random()*1000));
}
Will JVM tuning help? No, because we’re stuck in an infinite loop, since i
never gets increased. Of course, there are a lot of less obvious examples, but when code can be improved and optimized, this must be done first before thinking about JVM tuning.
If the hardware can realistically be optimized, this should be done before JVM tuning as well. By this, I don’t mean that you should fix a memory leak by just adding more memory; of course, that’s not a fix. But when your application accidentally gets very successful and things get slow, chances are that you are better off upgrading the hardware than...