Tajemnica pamięci Java (czy mam wyciek)?

Mam autonomiczny problem z Java działający na serwerze linux. Zacząłem jvm z -Xmx256m. Dołączyłem monitor JMX i widzę, że sterty nigdy nie przekraczają 256 MB. Jednak w moim systemie Linux po uruchomieniu najwyższego polecenia widzę, że:

1) Po pierwsze, wykorzystanie pamięci RES w tym procesie wynosi około 350 MB. Czemu? Przypuszczam, że to z powodu pamięci poza stosem?

2) Po drugie, wykorzystanie pamięci VIRT w tym procesie stale rośnie i rośnie. Nigdy się nie zatrzymuje! Teraz pokazuje się na 2500Mb! Czy mam wyciek? Ale kupa się nie zwiększa, po prostu się zmienia!

Ostatecznie stanowi to problem, ponieważ wymiana systemu stale rośnie i ostatecznie system umiera.

Jakieś pomysły, co się dzieje?

Ważne pytanie, które chcę zadać, jakie są niektóre scenariusze, które mogą być wynikiem mojego kodu, a nie JVM, kernal itp. Na przykład, jeśli liczba wątków rośnie, czy pasowałoby to do opisu moich obserwacji? Coś podobnego, na co możesz mi zasugerować?

questionAnswers(6)

yourAnswerToTheQuestion