En todos los ejemplos que veo del indicador -Xmx en la documentación de Java (y en los ejemplos en la web), siempre es una potencia de 2. Por ejemplo, '-Xmx512m', '-Xmx1024m', etc.
¿Es esto un requisito, o es una buena idea por alguna razón?
Entiendo que la memoria en general viene en potencias de 2; esta pregunta es específicamente sobre las banderas de memoria de Java.
Mantiene las cosas simples, pero es más para su beneficio que cualquier otra cosa.
No hay ninguna razón particular para elegir una potencia de 2 o un múltiplo de 50 MB (también común), por ejemplo -Xmx400m o -Xmx750m
Nota: la JVM no sigue esto estrictamente. Usará esto para calcular los tamaños de diferentes regiones que, si las sumas, tienden a ser ligeramente menores que el número que proporcionas. En mi experiencia, el montón es 1% - 2% menos, pero si considera todas las demás regiones de memoria que usa JVM, esto no hace mucha diferencia.
Nota: los tamaños de memoria para el hardware suelen ser una potencia de dos (en algunas PC eran 3 veces una potencia de dos). Esto podría haber hecho que la gente se acostumbrara a pensar en los tamaños de memoria como una potencia de dos.
Por cierto: AFAIK, en la mayoría de las JVM, el tamaño real de cada región es un múltiplo del tamaño de la página, es decir, 4 KB.