![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 259 Pomógł: 1 Dołączył: 3.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
moglby mi ktos wytlumaczyc jak w prawidlowy sposob zwolnic pamiec ram zajmowana przez skrypt ? Mam skrypt ktory operuje na duzej ilosci danych, przed pobraniem ich z mysql memory_get_peak_usage(true) zwraca 2 MB, po pobraniu danych do $jakas_zmienna (jako tablica wielowymiarowa) mam ponad 600 MB. Zapisuje dane do pliku i daje unset($jakas_zmienna) a polecenie to pokazuje ze nie zwolnilo tego nadmiaru ktory pobralem. Czytalem ze unset dziala ze spowolnienem, zastosowalem wiec $jakas_zmienna = null i mam ten sam wynik, przepelniona pamiec ram mimo usuniecia zmiennej ... jesli przyjrzec sie poleceniu memory_get_usage(), widac ze duzo pamieci zostalo "zrzucone" jednak serwer wyrzuca mi out of memory wiec trzeba patrzec na "realne" zuzycie. Pytanie tylko jak usunac szybko z ramu niepotrzebny nadmiar ? Ten post edytował Octobus 3.10.2018, 15:54:15 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
memory_get_PEAK_usage() jak sama nazwa od dokumentacji nie wspominając wskazuje zwraca najwyższe chwilowe zużycie pamięci jaki skrypt/program miał, nie obecne.
1. GC ma prawo zadziałać dopiero z opóźnieniem. 2. Musisz wczytywać wszystkie dane do pamięci przed ich zapisem? Nie możesz tego zrobić strumieniowo? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 3.05.2025 - 06:05 |