Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zwalnianie pamięci
pp-layouts
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 1
Dołączył: 28.09.2007
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


Wydaje mi się, że w PHP generalnie nie ma konieczności jawnego definiowania destruktorów obiektu, chyba, że chce się, żeby coś "na do widzenia" zrobiły, pamięć gdzie się tylko da jest automatycznie zwalniana, ale czy na pewno?

Powiedzmy, że mam wewnątrz metody coś takiego: $x = new krowa(); ..... return $x->wynik; Powiedzmy, że krowa to krowiasty obiekt, zawierający sporo danych. W mojej metodzie interesuje mnie tylko jedna właściwość tego obiektu, którą zwracam. Po każdym return $x->wynik pamięć obiektu jest zwalniana, prawda?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


PHP używa licznika referencji do określania czy pamięć należy zwolnić czy nie. unset usuwa jedynie referencję, a sam obiekt znika dopiero wtedy, gdy usunięta zostanie ostatnia. Wersje PHP poniżej 5.3.0 nie potrafią wykrywać cykli, tzn. obiekt A wskazuje na B, B na A, lecz do żadnego z nich nie ma dostępu z reszty skryptu. Dopiero najnowsze PHP potrafi się tym zająć, choć można to wyłączyć, a ponadto na bugtrackerze są zgłoszone jakieś niepotwierdzone przez twórców błędy o wyciekach pamięci. Osobiście skłaniam się ku temu, że jakieś wycieki tam są, bo to niemożliwe jest, żeby po wyczyszczeniu ilość zajętej pamięci... rosła.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 07:24