![]() |
![]() |
![]()
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: 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
#3
|
|
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 12:30 |