Dzisiaj przypadkiem znalazłem konkretny memory leak.
Gdy wrzucę ten skrypt na swój serwer, po ok. 4 godzinach (zależnie od liczby graczy) wywala on serwer z powodu braku wolnego RAM'u.
Nie trzeba się zastanawiać - to przez pętlę while. Tylko dlaczego? Gdzie popełniłem błąd, że dzieją się takie cuda? Dlaczego skript zapycha mi RAM przez ten skrypt?
Po usunięciu tego skryptu, serwer mógłby działać nawet kilka stuleci. Z tym skryptem zaś, kilka godzin + dłużej, jeśli dodam więcej RAM'u.
Będę wdzięczny za jakieś sugestie ;x
command detector <player>:
trigger:
if sender is console:
if player-argument is in the region "arenabp":
if {skan::%player-argument%} is true:
stop
else:
set {skan::%player-argument%} to true
set {_locx%player-argument%} to x-location of player-argument
set {_licznik%player-argument%} to 0
while {_locx%player-argument%} is x-location of player-argument:
if {_locx%player-argument%} is x-location of player-argument:
if {_licznik%player-argument%} <= 10:
add 1 to {_licznik%player-argument%}
if {_licznik%player-argument%} = 5:
send "&4&lTańcz! Inaczej zostaniesz usunięty z areny!" to player-argument
wait 28 ticks
else:
delete {skan::%player-argument%}
wait 1 tick
kick player-argument due to "&4&lDziwne zachowanie na parkiecie (Cheaty?)"
stop
else:
delete {skan::%player-argument%}
stop
delete {skan::%player-argument%}
Pytanie
piter909 4
Hej,
Dzisiaj przypadkiem znalazłem konkretny memory leak.
Gdy wrzucę ten skrypt na swój serwer, po ok. 4 godzinach (zależnie od liczby graczy) wywala on serwer z powodu braku wolnego RAM'u.
Nie trzeba się zastanawiać - to przez pętlę while. Tylko dlaczego? Gdzie popełniłem błąd, że dzieją się takie cuda? Dlaczego skript zapycha mi RAM przez ten skrypt?
Po usunięciu tego skryptu, serwer mógłby działać nawet kilka stuleci. Z tym skryptem zaś, kilka godzin + dłużej, jeśli dodam więcej RAM'u.
Będę wdzięczny za jakieś sugestie ;x
Odnośnik do komentarza
https://skript.pl/temat/9542-memory-leak-w-p%C4%99tlach-while-bardzo-wa%C5%BCne/Udostępnij na innych stronach
1 odpowiedź na to pytanie
Rekomendowane odpowiedzi