2016-11-20 2 views
-4

Когда мы создадим объект класса, объект перейдет к куче, а ссылочные переменные будут помещены в стек.Какие методы мы должны использовать для предотвращения выхода JVM OutOfMemory?

Что я пытаюсь задать здесь: сколько объектов может привести к ошибке OutOfMemory, и наша JVM закончится без памяти.

Кроме того, весной мы создаем объекты с использованием инъекции зависимостей, а затем контейнер МОК создает и управляет ими и их жизненным циклом. Поэтому вопрос заключается в том, где хранятся все объекты и каковы шансы на выход из памяти контейнера IOC.

Есть ли какие-либо ограничения?

+2

* «Сколько объектов может быть создано?» * Это, очевидно, зависит от размера объекта и объема памяти, и какой общий ответ вы ожидаете? --- * «Где хранятся все объекты?» * В куче, как вы уже сказали сами. --- * «Каковы шансы, что контейнер МОК выйдет из памяти?» * Опять же, это ** очевидно ** зависит от количества и размера бобов и объема памяти. --- * «Есть ли какие-то ограничения?» * Да. – Andreas

+0

@Andreas Каковы ограничения, и IOC имеет свою собственную область памяти, где Он хранит все объекты или использует одну и ту же кучу. – sNegi

+1

Ограничение - это объем памяти. Какое еще ограничение вы ожидали?--- IOC также является кодом Java, и есть только одна куча. – Andreas

ответ

0

Это зависит от того, сколько объектов живет дольше, то есть в каком-то кеше и т. Д. Вы можете получить OOM даже с объектами в стеке, если попробуйте загрузить большую таблицу или файл в память.

Если вы хотите предотвратить OOM, вам следует знать использование памяти вашего приложения. Используйте профилировщик или инструмент APM, такие как AppDynamics, Dynatrace или NewRelic, чтобы увидеть шаблоны использования памяти или взять несколько кучи кучи и проанализировать их.

0

Количество объектов, которые вы можете сохранить, зависит от максимального размера кучи и размера каждого объекта. Для типичного размера сервера, скажем, 4 ГБ, вы можете создавать десятки миллионов объектов. Вы вряд ли исчерпаете память, если не загружаете серьезный объем данных.

0

Сколько объектов может привести к ошибке OutOfMemory, и у нашего JVM закончится память?

Это зависит от количества объектов и размера кучи JVM, сконфигурированных по умолчанию или путем настройки с использованием параметра -Xmx.

Кроме того, весной мы создаем объекты с помощью инъекции зависимостей, а затем контейнер МОК создает и управляет им и их жизненный цикл. Итак, вопрос в том, где хранятся все объекты и каковы вероятность того, что контейнер IOC может исчезнуть из-за нехватки памяти?

Вместо того, мы создаем объект вручную для класса с помощью оператора new, мы дали обязанность контейнера МОК (для введения в зависимости контролируемым образом). Итак, создадим ли мы объект с помощью оператора new или контейнера IOC, оба будут в конечном итоге находиться внутри JVM.

Итак, контейнер IOC будет управлять всеми объектами только в JVM, и все объекты будут храниться в памяти Heap, а вероятность нехватки памяти зависит от значения по умолчанию или -XmX, как указано выше.

+0

Как весна различает и отслеживает только объекты, созданные с использованием пружины, если все будет храниться в одном месте. – sNegi

+0

Весна управляет этим через текст приложения – developer