O tamanho máximo do heap que você deseja atribuir será baseado na utilização do seu sistema de recursos próprios, outros serviços que estão sendo executados, etc. Você deseja atribuir um tamanho de heap que deixe memória suficiente disponível para o SO para evitar paginação de memória. Isso é mais um problema no Windows, mas o problema também é visto no Linux (sou mais especialista em Windows que Linux, então sinto muito por isso).
Primeiro, você deseja verificar a utilização de recursos de seus sistemas: link
Em seguida, você deseja ver como o arquivo de sua página está configurado: link
Em seguida, você terá que testar diferentes configurações com base nas informações coletadas anteriormente e observar a utilização do arquivo de página: link
Se o seu arquivo de página estiver sendo muito utilizado, o tamanho do heap será muito grande. Se estiver sendo usado muito pouco ou nada, você pode tentar aumentar seu tamanho de heap para melhorar o desempenho (os resultados de desempenho reais variam entre diferentes aplicativos Java e o aumento do tamanho de heap pode piorar alguns aplicativos devido à maneira como eles estão programados).
Você deseja certificar-se de atribuir a quantidade adequada de memória para que seu SO tenha RAM livre suficiente para manter facilmente o arquivo de paginação, e seu aplicativo tenha bastante memória atribuída a ele. No Windows, eu tento manter pelo menos 25% de RAM livre sob carga. Eu tentaria configurações diferentes e observaria o desempenho do seu sistema.
UMA NOTA MAIS IMPORTANTE ATENÇÃO: No Java 8, você não precisa definir esses itens, o Java 8 parece ser melhor em manter esses valores, em vez de atribuí-los estatisticamente.