Many of the recommendations are quite old. There has been several changes regarding Heap and GC in Java.
I have previously found recommendation that setting a too high max heap size could impact performance, making it worse. So could also setting a too low value.
Not setting max heap size will use system default, which is about 1/4 of its total memory. For my computer it will allocate 8GB to the JVM of my total memory.
I am using the Java 7 introduced G1GC with applying -XX:+UseG1GC during runtime.
It is very difficult to find a one size fits all for Max Heap Size. The application I am working on can be scaled from small to very large, depending on its composition (which is very dynamic and determined at runtime). I have seen some instances of the application not require more than 1GB of Max Heap, but others benefits from a larger size. Setting the Max Heap in Java Web Start to 4GB, or even 2GB causes problems with clients running 32bit (Java and/or OS, and yes those people do exist).
Is there actually any point setting Max Heap Size any more using either Java 7 or 8? The JVM will use what is available, and the GC will work between used heap and committed head. Or does the GC work between all used and max heap?