Eu tenho medo de que não haja uma resposta clara para a sua pergunta. o maior espaço no permgen deve ser ocupado pelas classes de sua aplicação. é possível que seu aplicativo esteja gerando classes enquanto está em execução. então o comportamento descrito de sua aplicação é o esperado. quando seu aplicativo não estiver gerando classes dinamicamente, o número de classes carregadas e a quantidade de permgen devem ser mais ou menos estáticas.
quando seu aplicativo está criando muitas classes, você pode ter problemas de memória. Você verá java.lang.OutOfMemoryError: PermGen space
messages no log do tomcat. Você pode testar isso definindo o perm gen explicitamente com este parâmetro: -XX:MaxPermSize=
.
você também pode tentar este parâmetro: -XX:+CMSClassUnloadingEnabled
com o coletor de lixo cms. quando o número de classes carregadas não diminui, você ainda tem referências de objetos para essas classes. Isso pode ser um sinal de que você realmente tem um vazamento de memória. mas você definitivamente precisa saber o aplicativo em execução para ter certeza. quando este é o comportamento desejado do aplicativo, você só pode aumentar o espaço para o perm gen. o tamanho do perm gen é adicional ao tamanho do heap.
aqui é uma postagem em stackoverflow que sugere um método para deixar claro qual é o conteúdo do permgen.