作者是否建议将初始 perm size 和最大 perm size 值设置为相同的值可以防止完全 GC 发生?
旧的或永久的内存空间已满,为了容纳新的对象或类,如果相关参数具有不同的值,则需要将其扩展到最大大小。换句话说,如果 -Xms 和 -Xmx 具有不同的值,并且如果 Old 的大小需要从 -Xms 向 -Xmx 增加以容纳更多对象,则调用 FullGC。类似地,如果 -XX:PermSize 和 -XX:MaxPermSize 具有不同的值,并且永久空间需要向 -XX:MaxPermSize 增加以容纳新的 java 类,则调用 FullGC。 这可以通过始终将 -Xms 和 -Xmx 以及 -XX:PermSize 和 -XX:MaxPermSize 设置为相同的值来避免。
Java 性能调优白皮书: http: //mfinocchiaro.files.wordpress.com/2008/07/java-virtual-machine-neutral.pdf