Собственное использование памяти Java

Там какой-либо инструмент должен знать, сколько собственная память использовалась из моего JAVA-приложения? Я испытал outofmemory из своего приложения: Текущая установка:-Xmx900m

Компьютер, Windows 2003 Server 32bit, RAM 4 ГБ.

Также изменение boot.ini к/3GB на окнах, будет иметь какое-либо значение? Если установлен Xmx900m, сколько макс. собственной памяти может быть выделено для этого процесса? это - 1100 м?

7
задан NoodleX 3 May 2010 в 07:55
поделиться

2 ответа

Свободное пространство процесса немного меньше 2GB - Xmx. (предполагая Sun JVM) Вы должны добавить ваше пространство permgen к Xmx, а затем вычесть около 150-200MB или около того для вещей ядра ОС. Если реальная проблема заключается в нехватке памяти, то переход на 3 ГБ или уменьшение пространства Xmx и PermGen должно облегчить ее. Иногда, по крайней мере в Windows, ОС просто требуется больше времени, чем JVM готова ждать, чтобы выделить поток, и проблема скорее в том, что вы спамите порождениями потоков, чем в нехватке памяти. У вас должно быть достаточно памяти для нескольких тысяч потоков. Сколько их у вас будет, прежде чем он сдастся?

Есть также переключатель -Xss для управления размером стека потоков, который запрашивает JVM. YMMV, если изменение этого параметра действительно что-то дает в Windows или нет.

0
ответ дан 6 December 2019 в 12:47
поделиться

Если вы используете, например, jvisualvm (он поставляется с jdk), вы можете увидеть, сколько памяти использует ваше приложение, вы также можете профилировать его более подробно.

-2
ответ дан 6 December 2019 в 12:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: