Для любого процесса jvm принудительно создайте дамп потока. В окнах это можно сделать с помощью CTRL-BREAK, я полагаю, в окне консоли.
В * nix это почти всегда «kill -3 jvm-pid».
Это может отображаться, если у вас есть потоки, ожидающие в пуле соединений / пуле соединений и т. Д.
Еще одна вещь, которую нужно проверить, это количество подключений к JVM, которые у вас есть на данный момент - используйте утилиту NETSTAT или SysInternals, например tcpconn / tcpview (google it).
Также попробуйте выполнить команду verbose: gc JVM. Для JVM от Sun запустите "java -verbose: gc". Это покажет ваши сборки мусора. Если он собирает много (особенно ПОЛНУЮ КОЛЛЕКЦИЮ), то, возможно, у вас утечка памяти. Полные коллекции стоят дорого, особенно на таких больших кучах.
Как вы определяете, что используются только 300 МБ?