i make a class, Main which contains the main method like this:

```
public class Main {

    public static void main(String[] _args) {
    System.out.println("free:" + Runtime.getRuntime().freeMemory()
        + ". max:" + Runtime.getRuntime().maxMemory());
    }
}

```

then i run the class with -Xms2m and -Xmx2m. the output is like this:

```
free:2984840. max:7471104

```

then, my question is, if a megabytes is 1048576bytes, then the shown free memory is not 2megabytes as set in the -Xms. when i increase the -Xms option to 3m, it shows a megabyte addition free. anyone can explain what is happening,.? 

a different case occurs with -Xmx option, when i increase it to 3m, 4m, and 5m, the max is keep showing 7471104. which is around 71.44m. i don't really understand how this two options work.

this is what is printed when i set -Xms3m and -Xmx6m

```
free:4033416. max:7471104

```

anyone can help,.?

thank you :)

notes: i am working with Win7 x64 and Java 1.6 update 35.