Помогите Возможно ли очищать RAM без перезапуска?

  • Автор темы Автор темы H41L
  • Дата начала Дата начала

H41L

Активный участник
Пользователь
Баллы
66
Ник в Minecraft
H41L
Всем привет. Нагружается оперативная память очень быстро. Объясняю, есть плагин, допустим, который создает карту, когда игрок этого захочет. При этом накидывается где-то 50мб RAM. После выхода игрока с этой карты - карта удаляется. И так может сделать любой игрок, в связи с этим оперативка быстро нагружается.
Вообще возможно чистить оперативную память, не перезапуская сервер? Может есть какие-то плагины для этого и так далее.
 
Главное чтобы плагин за собой чистил. Что имеется ввиду под картой - отдельный мир или что? Если мир, то он должен быть корректно отгружен. Тогда память освободится. По htop этого не будет видно, потому что java её назад не отдаёт. Она будет выделена, но не использована, можно глянуть на сервере через /lag.

Всё, что можно сделать без перезапуска - сбросить кэш и вызвать сборщик мусора.
Код:
sync; echo 1 > /proc/sys/vm/drop_caches
из под рута
Код:
/lagg gc
это в ClearLag, может ещё где есть, должно вызываться вот это
Код:
Runtime.getRuntime().gc();
 
Главное чтобы плагин за собой чистил. Что имеется ввиду под картой - отдельный мир или что? Если мир, то он должен быть корректно отгружен. Тогда память освободится. По htop этого не будет видно, потому что java её назад не отдаёт. Она будет выделена, но не использована, можно глянуть на сервере через /lag.

Всё, что можно сделать без перезапуска - сбросить кэш и вызвать сборщик мусора.
Код:
sync; echo 1 > /proc/sys/vm/drop_caches
из под рута
Код:
/lagg gc
это в ClearLag, может ещё где есть, должно вызываться вот это
Код:
Runtime.getRuntime().gc();
Столько костылей, вместо рабочего решения save-all flush ? Ну бывает.
 
Главное чтобы плагин за собой чистил. Что имеется ввиду под картой - отдельный мир или что? Если мир, то он должен быть корректно отгружен. Тогда память освободится. По htop этого не будет видно, потому что java её назад не отдаёт. Она будет выделена, но не использована, можно глянуть на сервере через /lag.

Всё, что можно сделать без перезапуска - сбросить кэш и вызвать сборщик мусора.
Код:
sync; echo 1 > /proc/sys/vm/drop_caches
из под рута
Код:
/lagg gc
это в ClearLag, может ещё где есть, должно вызываться вот это
Код:
Runtime.getRuntime().gc();
Странно, после использования /lagg gc вообще перестала оперативка подниматься, наверное это хорошо, но странно😁.. Про уборщика забыл совсем, спасибо
 
Странно, после использования /lagg gc вообще перестала оперативка подниматься, наверное это хорошо, но странно😁.. Про уборщика забыл совсем, спасибо
При нехватке свободной памяти сборщик мусора должен отрабатывать автоматически, поэтому можно особо не беспокоиться по этому поводу. Хотя я не уверен, что в этом /lagg gc исключительно вызов коллектора. Может ещё какие-то сверхсложные манипуляции с серверными объектами и памятью, но это вряд ли
 
При нехватке свободной памяти сборщик мусора должен отрабатывать автоматически, поэтому можно особо не беспокоиться по этому поводу. Хотя я не уверен, что в этом /lagg gc исключительно вызов коллектора. Может ещё какие-то сверхсложные манипуляции с серверными объектами и памятью, но это вряд ли
Я ошибся, это было временное явление. Все так и жрется оператива, а сделать не знаю что
 
Полностью выгружает чанки на диск.
ну я предполагаю что у него есть авто-сохранение
Я ошибся, это было временное явление. Все так и жрется оператива, а сделать не знаю что
ведь есть же, да? и не раз в час?
 
ClearLag настрой на детектирование загруженности памяти и поочередное выполнение команд. Допустим
1. asw save
2. lagg unloadchunks <----Осторожнее выгружает нпсов citizens(добавить после нее citizens reload)
3. lagg gc
И да то что джава скушала обратно уже не отдаст. Сколько памяти занято на активные операции можно глянуть командой /lag
Опционально в список команд можно еще добавить убийство мобов и чистку мусора.
 
А как должен работать ASW? Как мы его поставили, тайминги по дефолту стоят
Ну я не помню сколько там по умолчанию автосохранение. Надо секунд 300. Если не поможет, придётся утечку в плагинах искать. Есть что-нибудь тяжёлое? Вот динмап жрёт память беспощадно.
 
Ну я не помню сколько там по умолчанию автосохранение. Надо секунд 300. Если не поможет, придётся утечку в плагинах искать. Есть что-нибудь тяжёлое? Вот динмап жрёт память беспощадно.
у меня есть плагин,про который я писал в шапке. Его мало кто тут знает, он отвечает за данжи(подземелья с мобами). Он работает так: Я создаю с помощью него карту, в которой все строю и делаю настройки. После этого карта сохраняется в папку плагина. Потом каждый игрок может собирать группу или играть один на этой карте. Игрок входит в данж, создается новая карта, после того как он умер или прошел, карта закрывается (удаляется). Вот на это все уходит много памяти походу
 
Странно. После отгрузки память должна освободится. Но если помогал lagg gc, тут что-то не так с мусорщиком. Что в аргументах запуска? У меня вот такие
Код:
-Dfile.encoding=utf-8 -server -Xmx2656M -Xms256M -XX:+DisableExplicitGC -XX:+UseG1GC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:+DoEscapeAnalysis -XX:+OptimizeFill -XX:+EliminateLocks -XX:+OptimizeStringConcat -XX:MaxGCPauseMillis=500
а конкретно это нужно
Код:
-XX:+UseG1GC
 
Странно. После отгрузки память должна освободится. Но если помогал lagg gc, тут что-то не так с мусорщиком. Что в аргументах запуска? У меня вот такие
Код:
-Dfile.encoding=utf-8 -server -Xmx2656M -Xms256M -XX:+DisableExplicitGC -XX:+UseG1GC -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:+DoEscapeAnalysis -XX:+OptimizeFill -XX:+EliminateLocks -XX:+OptimizeStringConcat -XX:MaxGCPauseMillis=500
а конкретно это нужно
Код:
-XX:+UseG1GC
Уборщик не помогал, мне показалось, что он остановил нагрузку, но это было не так. Где эти параметры посмотреть?
 
Сервер на хосте запускается. Где точно должен находиться этот файл?
Тогда это жопа. Там всем панель управляет, а у обычных юзеров вряд ли есть такой доступ, чтобы свои аргументы вставлять. Ну ставь тогда lagg gc в интервал, через asw можно сделать.
 
Тогда это жопа. Там всем панель управляет, а у обычных юзеров вряд ли есть такой доступ, чтобы свои аргументы вставлять. Ну ставь тогда lagg gc в интервал, через asw можно сделать.
Можете подсказать, как должно выглядеть это в конфиге? Если не сложно конечно
 
Назад
Верх Низ