Приложение для Windows ограничено 2 ГБ памяти для приложения, поэтому, как вы указали, 1348 МБ, есть и другие пулы памяти и, конечно, JVM сама.
Существует настройка Windows, которую вы можете указать во время загрузки, чтобы приложение могло использовать 3Gb, но JVM от Sun не играет с этим. JRockit делает хотя
С другой стороны, можно ли кластеризовать tomcat и распределить рабочую нагрузку?