Там какой-либо инструмент должен знать, сколько собственная память использовалась из моего JAVA-приложения? Я испытал outofmemory из своего приложения: Текущая установка:-Xmx900m
Компьютер, Windows 2003 Server 32bit, RAM 4 ГБ.
Также изменение boot.ini к/3GB на окнах, будет иметь какое-либо значение? Если установлен Xmx900m, сколько макс. собственной памяти может быть выделено для этого процесса? это - 1100 м?
Свободное пространство процесса немного меньше 2GB - Xmx. (предполагая Sun JVM) Вы должны добавить ваше пространство permgen к Xmx, а затем вычесть около 150-200MB или около того для вещей ядра ОС. Если реальная проблема заключается в нехватке памяти, то переход на 3 ГБ или уменьшение пространства Xmx и PermGen должно облегчить ее. Иногда, по крайней мере в Windows, ОС просто требуется больше времени, чем JVM готова ждать, чтобы выделить поток, и проблема скорее в том, что вы спамите порождениями потоков, чем в нехватке памяти. У вас должно быть достаточно памяти для нескольких тысяч потоков. Сколько их у вас будет, прежде чем он сдастся?
Есть также переключатель -Xss для управления размером стека потоков, который запрашивает JVM. YMMV, если изменение этого параметра действительно что-то дает в Windows или нет.
Если вы используете, например, jvisualvm (он поставляется с jdk), вы можете увидеть, сколько памяти использует ваше приложение, вы также можете профилировать его более подробно.