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ć?