Mistério da memória Java (eu tenho um vazamento)?

Eu tenho um problema Java autônomo em execução em um servidor linux. Eu comecei o jvm com -Xmx256m. Eu anexei um monitor JMX e posso ver que o heap nunca passa 256Mb. No entanto, no meu sistema linux quando eu executo o comando top eu posso ver que:

1) Primeiro de tudo, o uso de memória RES deste processo é em torno de 350Mb. Por quê? Eu suponho que isso é por causa da memória fora do heap?

2) Em segundo lugar, o uso de memória VIRT deste processo continua crescendo e crescendo. Isso nunca para! Agora mostra a 2500Mb! Então eu tenho um vazamento? Mas heap não aumenta, apenas ciclos!

Em última análise, isso representa um problema porque a troca do sistema continua crescendo e, eventualmente, o sistema morre.

Alguma idéia do que está acontecendo?

A questão importante que eu gostaria de perguntar, quais são alguns cenários que isso poderia ser um resultado do meu código e não a JVM, kernal, etc. Por exemplo, se o número de threads continua crescendo, isso se encaixaria na descrição das minhas observações? Qualquer coisa parecida que você possa me sugerir?

questionAnswers(6)

yourAnswerToTheQuestion