![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 15.07.2004 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio (nie wiem skąd) naszła mni myśl: czy tworzę wyciek pamięci takim kodem:
PHP samo usunie instancję klasy myClass z pamięci (tak jak to robi Java ze swoim odśmiecaczem pamięci) czy instancja zostanie w pamięci i zrobi się nam wyciek (tak jak w C)? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
z tego co wiem, Zend posiada Garbage Collector.
|
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Dobre nigdy sie nad tym nie zastanawialem. Najlepiej to sprawdzic odpalajac w petli np 1 mil razy i badajac przyrost pamieci. Wydaje mi sie ze nie bedzie zadnego przyrostu pamieci ale tego nie potrafie potwierdzic bo nie sprawdzalem.
|
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Usuwa.
Kod [aaa niszcza mnie]
[aaa niszcza mnie] [aaa niszcza mnie] [aaa niszcza mnie] [aaa niszcza mnie] [aaa niszcza mnie] [aaa niszcza mnie] [aaa niszcza mnie] [aaa niszcza mnie] [aaa niszcza mnie] |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.01.2006 Skąd: Wodzisław Śl. Ostrzeżenie: (0%) ![]() ![]() |
Przy zabawie z class.tlen.php, bocik postawiony na tym chodzil przez kilka godzin, po zabicu procesu interpretatora php z ramu ubylo ok. 200MB.
Wydaje mi sie ze w php latwo o wycieki pamieci, przy niezbyt dobrze przemyslanych wiekszych skryptach, ktore jakis czas musza "chodzic". Bo w typowym oskryptowaniu stron to po zakonczeniu skryptu pamiec jest zwalniana. Zeby poznac blizej problem trzeba byloby zajrzec w zrodla (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 155 Pomógł: 0 Dołączył: 15.07.2004 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
Tak jak mówił SonoQ zrobiłem prosty test:
Po uruchomieniu tego skrypciku nic nie wskazywało na wzrost ilości zajmowanej pamięci. Aby się upewnić zrobiłem 2 test pokazujący jak powinna się zapychać pamięć gdyby był wyciek:
Ilość zadeklarowanej pamięci zaczęła gwałtownie się zwiększać (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Po zakończeniu skryptu komp musiał chwile popracować nad usunięciem z RAMu niepotrzebnych informacji. Podsumowując PHP automatycznie usuwa niepotrzebne instancje z pamięci (tak jak java). |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%) ![]() ![]() |
sorki za odkopywanie staroci - ale skoro nie jest tak różowo to lepiej nie tkwić w błędzie jeśli ktoś to przeczyta...
Podsumowując PHP automatycznie usuwa niepotrzebne instancje z pamięci (tak jak java). Jakoś sobie manuala przeglądałem a potem trochu pogooglałem (tak przy okazji znowu na to forum trafiłem a szukałem czegoś podobnego ;p)... w powyższych przykładach akurat jest usuwana zmienna/referencja (może trochę źle się wyrażę) i o wyciek przy krótko działających skryptach aż nadto nie trzeba się martwić gdyż na koniec i tak to z ramu się upłynni. Jednak jeśli skrypt ma dłużej działać lub coś napisane w stylu demona to pasuje wiedzieć kiedy jest wyciek pamięci - w duuuużym skrócie to jak się usunie "zewnętrzne" odwołanie do obiektu a wewnątrz też była jakaś referencja.... zresztą co tu dużo pisać - ciekawi tematu to odsyłam do manuala: Garbage Collection ps. w niektórych wersjach php zdarzają się niektóre funkcje powodujące wyciek pamięci ^^ Ten post edytował zegarek84 25.03.2010, 03:05:27 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat w duuuurzym skrucie Włącz sobie podświetlanie błędów w przeglądarce...
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 21:27 |