Последняя версия профилировщика памяти ANTS (думаю, это 5) просто потрясающая !!! Я преследовал утечку, используя WinDbg и SOS, так как это оказалось лучшим способом раньше, затем я попробовал ANTS, и я получил его за несколько минут. Действительно замечательное программное обеспечение.
Это зависит от GC, который использует ваша java. Параллельные сборщики мусора могут работать лучше с большими настройками памяти - хотя я в этом не разбираюсь.
В общем, если у вас большая память, тем реже сборку мусора нужно производить - остается много места для мусора. Однако, когда дело доходит до GC, GC должен работать с большим объемом памяти, что, в свою очередь, может быть медленнее.
The -Xmx
argument defines the max memory size that the heap can reach for the JVM. You must know your program well and see how it performs under load and set this parameter accordingly. A low value can cause OutOfMemoryExceptions or a very poor performance if your program's heap memory is reaching the maximum heap size. If your program is running in dedicated server you can set this parameter higher because it wont affect other programs.
The -Xms
argument sets the initial heap memory size for the JVM. This means that when you start your program the JVM will allocate this amount of memory instantly. This is useful if your program will consume a large amount of heap memory right from the start. This avoids the JVM to be constantly increasing the heap and can gain some performance there. If you don't know if this parameter is going to help you, don't use it.
In summary, this is a compromise that you have to decide based only in the memory behavior of your program.
Трудно сказать, как распределение памяти повлияет на вашу скорость. Это зависит от алгоритма сборки мусора, который использует JVM. Например, если вашему сборщику мусора нужно приостановить работу, чтобы выполнить полную сборку, тогда, если у вас на 10 больше памяти, чем вам действительно нужно, то у сборщика будет еще 10 мусора для очистки.
Если вы используете java 6, вы можете использовать jconsole (в каталоге bin jdk), чтобы подключиться к вашему процессу и посмотреть, как ведет себя сборщик. В целом сборщики очень умны, и вам не нужно ничего настраивать, но если у вас есть необходимость, вы можете использовать множество опций для дальнейшей настройки процесса сбора.