Dans l'esprit de la question http://stackoverflow.com/questions/3356005/java-why-does-maxpermsize-existj'aimerais demander pourquoi la JVM de Sun utilise fixe la limite supérieure pour la taille de son allocation de mémoire de la piscine.
La valeur par défaut est de 1/4 de votre RAM physique (avec le haut et le bas de la limite); en conséquence, si vous avez une mémoire-faim application, vous devez modifier manuellement la limite (paramètre -Xmx), ou votre application sera de piètre qualité, possible même en cas de collision avec un OutOfMemoryError.
Pourquoi cette limite fixe, même exister? Pourquoi la JVM de ne pas allouer la mémoire nécessaire, comme des programmes sur la plupart des systèmes d'exploitation?
Cela permettrait de résoudre toute une classe de problèmes communs avec les logiciels Java (juste google pour voir comment de nombreux indices, il existe sur le net sur la résolution de problèmes par la mise -Xmx).
Edit:
Certaines réponses soulignent que cela permettra de protéger le reste du système à partir d'un programme Java avec une fugue fuite de mémoire; sans la limite ce serait mettre l'ensemble du système vers le bas par épuisement de la mémoire. Ce qui est vrai, cependant, il est tout aussi vrai pour n'importe quel autre programme, et de nouveaux Systèmes d'exploitation déjà vous permettre de limiter la quantité maximale de mémoire pour un programm (Linux ulimit, Windows "Objets"). Donc, ce n'est pas vraiment répondre à la question, "Pourquoi la JVM d'une manière différente de la plupart des autres programmes ou d'autres environnements d'exécution?".