Ограничение использования памяти для Solr на Jetty - PullRequest
3 голосов
/ 25 апреля 2011

У меня ограниченная память среда, и я запускаю Solr на Jetty с помощью следующей команды:

java -jar -Xmx64M -Xmn32M -Xss512K start.jar

Но общее потребление памяти экземпляра Solr (или Jetty), по-видимому, намного выше предела кучи, который я предоставляю. Вывод ps:

ps -u buradayiz -o rss,etime,pid,command

155164 01:37:40 21989 java -jar -Xmx64M -Xmn32M -Xss512K start.jar

Как видите, RSS больше 150M. Как я могу избежать этой ситуации? Я просто хочу получить простое исключение OutOfMemory , когда Solr / Jetty использует больше памяти, чем я им позволяю.

Я понимаю, что может быть разница между лимитом кучи, который я предоставляю, и фактическим использованием памяти, но разница в два (на самом деле 2,5) мне кажется большой. Я должен что-то упустить.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 25 апреля 2011

Существует ряд факторов, которые способствуют использованию памяти помимо спецификации кучи.

Важнейшим в вашей ситуации является постоянное поколение.Он используется для загрузки классов для всех зависимостей, необходимых для запуска приложения, и некоторых других вещей.Там не так уж много обходить определенный минимум для данного приложения из-за необходимых классов.Вероятно, вам потребуется около 64 МБ (возможно, больше) для запуска Solr на Jetty.

Вы можете указать максимальный размер, чтобы предотвратить рост постоянного поколения для других вещей, например, добавьте -XX:MaxPermSize=64M в вашу командную строку.Хотя вряд ли это сильно поможет, и может даже сломать, если потребуется больше.Обычно это почти все используемые классами, которые вам нужны.

Еще одним фактором, влияющим на использование памяти, помимо кучи, является размер стека на поток.Каждый поток в вашем случае будет потреблять 512 КБ.Вы, вероятно, можете безопасно указать 256 Кб, хотя у вас, вероятно, недостаточно потоков, чтобы иметь слишком большое значение.

0 голосов
/ 23 октября 2012

У меня такая же проблема;пытаясь запустить его в ограниченной среде.(Макс. 400 МБ оперативной памяти / размер памяти).Это решение, кажется, запускает его как минимум.

...